feat(Change Detection): Implement collection changes

Based on https://github.com/angular/angular.dart/pull/1348 and a few parts from watch tower.

One gotcha: `MapWrapper.clear()` does not work - this needs further investigations !!

_(thanks to @vsavkin who gave me some tips for debugging)_
Should we care about Map polyfill perf if we target evergreen browsers ?