Appng 92 - Make modules optional

In order to make modules optional and able to be loaded in any order, the following tasks have been carried out:

* Modules have been splitted into separate files.
* Build task (dist) has been updated to generate a single file for each module, by concatenating files for each module in the correct order. The same file list is used for this contatenation and for auto inject script tags into demo's index.html.
* Module dist files still could not be loaded in any order, neither be missing, since some modules have dependencies among them. To solve this issue, modules have been decoupled and the integration between them is now performed by COMMONAPI, which also handles the situation of missing optional modules. When a module has a dependency with another that has not been loaded, default behaviour occurs.
Decoupled modules are:
    * AppLogging and AppDetection
    * AppRest and AppSecurity
    * AppRest and AppCache
* COMMONAPI, AppConfiguration, AppConfigDefault and AppConfigLoader modules are included in the same dist bundle (app-main.js) as they are always required. **This is he only ordering restriction, as api-main.js must be loaded after the rest of modules have been loaded**
* Dist task now includes unit, midway and e2e tests.
* New module AppRouter has been added to encapsulate the initialization of route states.