chore(test-bed): add fromInjector constructor to TestBed

Some clients do not generate static factories for test code, and instead
directly depend on TestBed constructor. This commit adds a new
constructor is basically the injector factory method, requiring only
injector vs a full set of parameters.

Once clients have been moved to use fromInjector method (or even better
a transformer run for test code), we can change the constructor
dependencies in a non-breaking way.

Closes #1271
chore(intl): support newer version of "intl"

Angular's pubspec for intl spans versions with breaking changes.  For
Angular, a change in date formatting would be a breaking change but
changes do to CLDR updates are not breaking changes.  This commit
updates a test to swap out a locale with a CLDR update to one that
wasn't updated to enable it to pass across the CLDR breaking change.

Closes #1203
fix(benchmark): Remove obsolete DI call
refactor(element_binder): Remove bindAttrName
refactor(DirectiveInjector)
refactor: Drop the Controller directive

closes #919
closes #917

1) The @Controller has been removed

It is possible to define the context of the root scope with:

    applicationFactory()
        ..rootContextType(RootContext)
        ..run();

The root context type needs to be annotated with @Injectable():

    @Injectable()
    class RootContext {
      // ...
    }

2) You can not inject a scope in a component or in the root context any
more

As the Scope context is set to the Component instance, the scope could
not be injected any more. Components should implements the "ScopeAware"
interface and declare a "scope" setter in order to get a reference to
the scope.

before:

     @Component(...)
     class MyComponent {
       Watch watch;
       Scope scope;

       MyComponent(Dependency myDep, Scope scope) {
          watch = scope.rootScope.watch("expression", (v, p) => ...);
       }
     }

after:

     @Component(...)
     class MyComponent implements ScopeAware {
       Watch watch;

       MyComponent(Dependency myDep) {
         // It is an error to add a Scope / RootScope argument to the
         // ctor and will result in a DI circular dependency error
         // The scope is never accessible in the class constructor
       }

       void set scope(Scope scope) {
          // This setter gets called to initialize the scope
          watch = scope.rootScope.watch("expression", (v, p) => ...);
       }
     }

or:

     @Component(...)
     class MyComponent implements ScopeAware {
       Scope scope;

       MyComponent(Dependency myDep) {
         // It is an error to add a Scope / RootScope argument to the
         // ctor and will result in a DI circular dependency error
         // The scope is never accessible in the class constructor
       }
     }
feat: Removing implicit map dereference in expressions

Closes #915

1) Now "a.b" return a.b and "a['b']" return a['b']

Before this change a.b would have match either a.b or a['b']. The reason
is that the context was a Map (before #914) and we don't want to write
ctrl['foo'] but ctrl.foo. It was also not possible to access Map
properties, ie map.length would have returned map['length'].

2) Accessing probes

The probes are no more accessible directly in the rootScope context but
in a $probes map on the rootScope context.

Before:

    <p probe="prb"></p>

    var probe = rootScope.context['prb'];

After:

    <p probe="prb"></p>

    var probe = rootScope.context.$probes['prb'];
feat(form): publish NgForm instances in the context

The forms are now available in the context field named after the form:

    @Component(
        selector: 'my-component',
        template: '''
          <form name="myForm">
            <input type="text" ng-model="model" name="input">
          </form>
        '''
    )
    class Component {
      // myForm is automatically initialized to the NgForm instance
      NgForm myForm;
    }

When the field named after the form is not present, an exception is
thrown.
feature(ngProbe): Allow specifying a root Node when using a selector
refactor: code cleanup
refactor(ngProbe) Remove usage of the probe directive (deprecated)
style: code cleanup
feat(Template): @Template replaces @Decorator(Directive.TRANSCLUDE_CHILDREN)

Backward compatibility breaks:

1- Transclusion syntax has changed:

Before:

    @Decorator(
        selector: '[ng-if]',
        children: Directive.TRANSCLUDE_CHILDREN,
        map: const {'.': 'mapping'},
        <other kv pairs>)

After:

    @Template(
        selector: '[ng-if]',
        map: const {'ng-if' : 'mapping'},
        <other kv pairs>)

2- Directive.children has been removed in favor of
Directive.compileChildren dor Directive.map

Before:

    - children: Directive.COMPILE_CHILDREN
    - children: Directive.IGNORE_CHILDREN
    - children: Directive.TRANSCLUDE_CHILDREN

After:

    - compileChildren: true
    - compileChildren: false
    - Use @Template (see the previous section)