MSON AST reflecting the new specification

For @fosrias, @honzajavorek and @pksunkara to review. 
@zdne We should have perhaps made this an object with members `required`, `optional` etc.. In the current format, we need to do a lot of traversing over `attributes` array when writing code which involves these.