fix(change-detection): remove memory leak

When the change detection finds change it creates a
linked list of records which have changed. The linked
list is not bound to groups but rather crosses groups, 
this implies that if we remove a group it is possible that
a record in a live group retains a pointer to a 
record in the now deleted record. While technically
not a leak, the memory will not be realized until that
record detects another change and gets re-added to the
dirty list. If the record never fires than the
memory is retained forever.
chore(selector): Refactor DirectiveSelectorFactory into an injectable service
chore(change detection): fix a typo in toString()
fix(NgModelValidators): ensure that number input types render invalid when non-numeric characters are present

input[type="number"] treats non-numeric values as NaN values and these are considered valid when
double.parse is used. This commit fixes the validation for the model to properly address the
invalid number when a NaN value is detected.
feat(forms): introduce the control.hasError helper method
style(animate demo): code cleanup
refactor(change_detection): remove unnecessary conditional expression

`prev` is guaranteed to not be null here, the method would throw noSuchMethod if it were.
fix(forms): do not reset input fields on valid submission
chore(docs): fix typos
chore(doc): build docs for angular/angular.dart repo only
fix(readme): Readd the Travis badge
fix(template_cache_generator): support traversal of partial files

Fixes #662
feat(forms): use the ng-form attribute as the name of the inner form
fix(change-detection): remove memory leak, use iterator

When the change detection finds change it creates a
linked list of records which have changed. The linked
list is not bound to groups but rather crosses groups,
this implies that if we remove a group it is possible that
a record in a live group retains a pointer to a
record in the now deleted record. While technically
not a leak, the memory will not be realized until that
record detects another change and gets re-added to the
dirty list. If the record never fires than the
memory is retained forever.
chore(import) remove unused import
chore(ng-repeat) remove deprecated NgShallowRepeat
fix(change-detection): delay processing watch registration inside reaction fn.

If a reaction function registers a new watch that watch should not be processed 
until the next change detection cycle.
fix(angular): export GetterCache from dccd
chore(demo): update demo titles & markup

Closes #636
fix(parser, scope): Allow nulls in binary operations.

Fixes #646