Added DI container implementation.
Turn module and application into DI containers.
Fixed test break.
fixed test break.
Added unit tests.
Refactored container.
refactored code to use Instance::ensure()
DI WIP
Finished refactoring of DI container and service locator.
Merge commit 'f605508bb2805d24df98037ea239f8f582deda0e' into feature-container
Final touchup.