fix(directive-injector): breaking changes and fixes

BREAKING CHANGE:

Regular injectors (aka application injectors) can no longer be used to
retrieve DirectiveInjectors.  The compiler creates the Directive
Injector as part of view creation process.

DEPRECATION:
- DirectiveInjector's parent accessor is now private.  (The typically
  lookup chain as used by the Application Injectors doesn't work for
  Directive Injectors and it's probably wrong for application code to
  access the parent but see the next point.)
- There's a new public method on the DirectiveInjector - `parentGet`.
  With parentGet, you can request types from the parent injector.  Since
  DirectiveInjector.parent is private, you would rewrite
  `injector.parent.get(...)` → `injector.parentGet(...)`.

TestBed does not need DI in its constructor.

INTERNAL CHANGES:
- Application Injector reference is passed through view creation into
  the new Directive Injector (instead of using
  parentInjector.appInjector, which is wrong when used with ng-view).
- Unwind recursion from the directive injector for performance.
- Remove EventListener from View.
- Replace DefaultDirectiveInjector with a DirectiveInjector that has no
  parent.
- Component visibility handled outside the visibility enum.
- Removed Shadowless and ShadowDirectiveInjector subclasses.

Prepares for a future change in which ComponentInjectors break the
resolution chain unless called directly.

Closes #1111
fix(transformer): Don't share resolvers between parallel transformers as this will cause a deadlock

Fixes #1276
Closes #1382
feat(directive-injector): component directive injector injects parent

BREAKING_CHANGE:
When asked for DirectiveInjector, ComponentDirectiveInjector injects
parent. When asked for ComponentDirectiveInjector it injects self.

Before:
MyComponent(DirectiveInjector di) { }

After:
MyComponent(ComponentDirectiveInjector cdi, DirectiveInjector di) { }

where before di = after cdi, before di.parent = after di.

Closes #1351