fix(parser+dirty_checking): Allow access to Map properties in expressions

Allow access to all `Map` properties like `map.length`, except for
`keys` and `values`. Introduces changes to parser and change detection.

Breaking change: map keys matching `Map` property names will now need
to be accessed as, e.g., `map[“length”]`.