feat(Change Detection): Add support for keyed access

Add support for:
- List[index],
- Map[index],
- Object[property]
I agree with @vsavkin. We should do whatever is natural in the given language, otherwise there will be no end of semantic matching. Yes, that does mean that Templates in JS and Dart will have slightly different semantics. I don't see too many people migrating from one to the other, and the migration cost will be dwarfed by the cost of migrating the imperative code. 

Stick with platform language semantics.