Restructure the Client to make use of modern JS modules

(User Story, Investigate , Priority: High, Test Status: No automated tests yet , Reported By Justin du Coeur, )
Summary: This is partly a research story, and is big, but it's potentially a big win
Modern JavaScript has a concept of "import", which works more or less as one would expect -- it allows you to define specific symbols you want to pull in from an external module.
The interesting question is: can we define these sorts of modules in Scala.js? That is, can I define utility functions that can be imported later?
If so, it would be well worthwhile to make use of this. We have lots of stuff in the Querki Client that isn't needed most of the time, ranging from the Admin UI to the Console. These should be defined in external Modules, and pulled in only when needed.
Note that we really want Scala.js 0.6.29 for this -- it adds support for dynamic imports at runtime, which are the key. This would imply that we only statically link the interface into the main client, but leave the actual implementation to later. In some cases, we likely wouldn't even need a new interface: for dynamically-loaded Pages, we could just have a standard name with a standard interface, and dynamically load that without any customization needed.
This is a big project, but potentially a big load-speed win, so it's worth exploring as soon as possible.