fix(change_detector): adding new ranges when disabling the current enabled record
refactor(change_detector): moves enableRecord/disableRecord into the Record class
fix(build): `gulp build.js.prod` should call `benchpress.js.prod`
feat(compiler): allow recursive components
fix(application): also bind the root component to the injector
fix(core): export ViewPort in the public exports
fix(build): analyze examples and benchmarks again
fix(benchmarks): use explicit `main()` function and do not reexport

Otherwise `pub` would not pick it up e.g. for `dart2js`.
fix(benchmarks_external): use angular dart transformer
feat(benchmarks): initial version of tree benchmark

Closes #269
style(Change Detection): rename WatchGroupDispatcher to ChangeDispatcher
style: misc minor changes
perf(Change Detection): Track the range & group on changes only

1.4x speed improvement with Firefox

There is no need to track the range & group for all the records but only
for the records that have changed.
perf(Change Detection): remove the usage of getters/setters

- Firefox is 2.4x faster (90 vs 221ms)
- Chrome is 24% slower (15.5 vs 12.5ms)

Chrome is still 5.8x faster than Firefox
feat(benchmarks): tree benchmark baseline
fix(scripts): make chrome launcher executable
feat(change_detection): ensure that expression do not change after they have been checked