MSON AST

C++ implementation. For @zdne to review.

@fosrias and @honzajavorek can take a look if they want.
If I can change this to `Member`, I can change the above `MemberTypeType` to `MemberType` and it would be all better.