feat(Change Detector): Add support for collection content watch

Add support for content watch (collections are normally watched by ref only).

Features in this PR:
- add content watch,
- add Iterable watch (like array watch),
- add JS Object watch (like map watch).
I believe if you use StringMapWrapper in the implementation, the tests will work both in Dart and JS. So you won't have to conditionally include them.