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)
docs(select): Update docs for InputSelect and OptionValue
docs(ng_model): Fix style of some of the directive entries
docs(directives): Edit directive descriptions and add examples
docs(directives): Add selector notation and some edits for clarity.
chore(docs): Fix left nav menu and restore di to nav

Closes #1093
docs: Update travis setup instructions

Closes #1226
doc(Scope): add/fix the DartDoc

closes #1204

Closes #1246
fix(watch_group): fix for NaN !== NaN

closes #1139

Closes #1146
chore: add ng-class benchmark

Closes #1176
chore(annotations): Undeprecate some annotations

@Controller remains deprecated.

For #1186

Closes #1198
fix(benchmark): typo in element tag names

Doesn't affect the benchmark times, because tag name is used outside
angular template.

Closes #1220
chore(bp): add min/max numbers to bp report

Closes #1233
fix: missing exception detail in bindings

For a binding such as <input ng-change="ctrl.foo()"> , if an exception happens inside foo() the exception is misleading and the original exception is not reported.

Closes #1242
fix(pubspec): Add missing upper bound version constraints
refactor(change detection): make wg and dccd more consistent