MSON AST reflecting the new specification

For @fosrias, @honzajavorek and @pksunkara to review. 
I am mainly thinking about C++, but we can also think if it would be better as an object here.