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 
I'd do it the other way around:
Take the current approach (ucfirst) and if an app does it differently, add it to info.xml
This why we have a suitable default?

But looking at the usage, it's only used on controllers for people being to lazy to define their controller as an service, and for routes?

If so, stop allowing lazy people on controllers and find another way for routes (maybe a service aswell?)