MSON AST reflecting the new specification

For @fosrias, @honzajavorek and @pksunkara to review. 
Okay, I think I got it why the property `name` can be those primitive types. But I think it's a bad idea. Can't we add another property to represent that and leave name to contain only the actual name?