MSON AST

C++ implementation. For @zdne to review.

@fosrias and @honzajavorek can take a look if they want.
Also a nit: I think it is a good idea to put any declarations to the top and instance attributes at the bottom of the struct definition, if possible, for a better readability.

```
struct X {
    
    A a;
    B b;

    struct C {

    };

    C c;
    D d;
}
```

vs.

```
struct X {
    
    struct C {

    };


    A a;
    B b;
    C c;
    D d;
}
```

I believe this is also the current style used in our C/C++ projects.