refactor(ElementInjector): support components

- Allow to access containing component directive instance from the shadow DOM.
- Allow to access app services of the app level injector of the component
  when the component is instantiated.
fix(BaseException): Support stack traces in BaseException
refactor(ElementBinder): Store componentDirective and templateDirective as well.