feat(directive_injector): build and maintain a tree of directive injectors

* Change the DirectiveInjector class to store a list of children.
* Change the View store a list of root directive injectors.
* Update ViewPort to keep the view tree and the directive injector tree in sync.
does this has to be public