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
here is where I think you should be passing in `Injector` and assigning it... Hmm... come to think of it we don't need to assign it at all, since it is sufficient to pass it in. Once instantiated we no longer need the appInjector.