MSON AST

C++ implementation. For @zdne to review.

@fosrias and @honzajavorek can take a look if they want.
For the sake of testing the interface please change the `std::vector` to `std:dequeue`