Documented compile time dependency injection in Scala

In addition to this, provided traits for wiring the built in components,
and also refactored plugins and routing so that they are located and
instantiated outside of application, being injected into the
application.