code: function App(appManager, config, options) {
      const app = this;
      this.expressApp = Express();
  
      //App specific Router
      /**
       * App specific Router constructor
       * @name App#Router
       * @instance
       * @readonly
       * @type {Function}
       */
      this.Router = function() {
          Router.apply(this, arguments);
      };
      this.Router.prototype = Object.create(Router.prototype);
      this.Router.prototype.constructor = Router;
      this.Router.prototype.App = this;
  
      //parent constructor
      AppI.call(this, appManager, config, options);
      app.$normalizeConfig();
  }
docs: App is `http` impementation of {@link App AppInterface} and represents
  a bundle of {@link Router Routers} with {@link Route Routes}. It holds http[s] server object
  or its equivalent/replacement and references to the {@link AppManager} and {@link Service}
  instances which it was created from. It also manages its own `Config` instance with restricted scope
  
  @param {AppManager}   appManager
  @param {Config}       config - module
  @param {Object}       options
  @param {String}       options.name - app's name
  @param {Object}       [options.validator] - Ajv validator initialization options
  @param {Object|Array} [options.validator.schemas] - list of globally accessible schema definitions
  
  @emits App#status-changed
  @emits App#pre-init
  @emits App#post-init
  @emits App#pre-build
  @emits App#post-build
  @emits App#build-router
  @emits App#listening
  @emits App#error
  @emits App#unknown-error
  @emits App#error-response
  @extends AppInterface
  @constructor