fix(introspection): getTestability should throw when ElementProbes are unavailable
feat(testability): whenStable replaces notifyWhenNoOutstandingRequests

BREAKING CHANGE:
  NOTE: This only affects you if you are calling this API directly.  If
  you are using ProtractorDart, then you are insulated from this change.

  To update your code, rename all references to the
  notifyWhenNoOutstandingRequests(callback) method on the testability
  object to whenStable(callback).
perf(View): Improve View instantiation speed and memory consumption.

View contains many injectors which are expensive in both speed and memory. The
New DirectiveInjector assumes that there are no more than 10 directives
per element and can be a lot more efficient than a array/hash lookup and
those it can be faster as well as smaller. This change makes View
instantiation speed 4x faster in Dartium VM.

BREAKING CHANGE:

- Injector no longer supports visibility
- The Directive:module instead of returning Module now takes
  DirectiveModule (which supports visibility)
- Application Injector and DirectiveInjector now have separate trees.
  (The root if DirectiveInjector is ApplicationInjector)