MSON AST

C++ implementation. For @zdne to review.

@fosrias and @honzajavorek can take a look if they want.
In all these occurrences please provide `bool hasMembers() const` since there might be situation when members are not de-referenceable and you won't be able to tell without it.