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
this should be `@ancestor` notice lower case and no `()`. The transpilar should then just create `ancestor` references rather then `new Ancestor()` This way we don`t have unnecessary too many instances, plus it makes syntax cleaner. Not sure if  transplire supports it. If you can add support it this PR great, otherwise create a issue to track it.