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)_
Good point. Can you just mark it as possible perf issue. Still can we have some perf tests which show performance of Map vis hashmap.