DI container

Fixes https://github.com/yiisoft/yii2/issues/503

For performance reason, automatic constructor injection is not implemented.

The most obvious BC breaking change to existing code is the renaming from `Application::getComponent()` to `get()`.