feat(ElementInjector): implement ElementInjector

Initial implementation of ElementInjector.

Works:
1. The creation of proto element injector trees
2. Bindings
3. The instantiation of element injectors
4. The instantiation of directives
5. Visibility: Parent and Ancestor
6. Delegation to application injectors
7. Error handling

Missing features:
1. Handling components.
2. Setting "special" properties (e.g., Element, View).
3. Cycle detection
4. Distance
5. Text nodes

Do we need it? There are tests checking that you can get an object from appInjector directly and indirectly: `should return app services` and `should instantiate directives that depend on app services`. There is no logic in `ElementInjector` treating directives special in regards to `appInjector`. So I think those tests should be sufficient.