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()`.

- [x] refactor existing app components to make use of `Instance`
- [x] controller creation should make use of container
- [ ] guide titled "Dependency injection and service locator"