Intelligent container

Implementation for #12829

Generates and injects parameters automatically. You can now build full classes like

    $c->query('MyClassName')

without having to register it as a service. The resolved object's instance will be saved by using registerService. If a constructor parameter is not type hinted, the parameter name will be taken. 

Therefore the following two implementations are identical:

    class Class1 { function __construct(MyClassName $class)
    class Class1 { function __construct($MyClassName)

This makes it possible to also inject primitive values such as strings, arrays etc.

In addition if the query could not be resolved, a QueryException is now thrown

Routes can now be returned as an array from routes.php and an appinfo/application.php is optional

@DeepDiver1975 @LukasReschke @MorrisJobke @bantu @PVince81 @nickvergessen @jbtbnl @georgehrke 
Ok, just realized that we actually can't figure out the proper namespace for an app because underscores are also in the app namespace (e.g.: files_versions would use the namespace OCA\Files_Versions or OCA\files_versions) This means that the correct app folder for the namespace OCA\MyApp will actually be apps/myapp.

We need another way to determine what namespace is used for an app with the app folder **somename**. The only thing that comes to my mind atm is to put the namespace into appinfo/info.xml: **<namespace>SomeName</namespace>**. Everything else seems extremely hacky (e.g. parsing the php file with regexes)

ideas @MorrisJobke @DeepDiver1975 @nickvergessen @PVince81 ?