MSON AST

C++ implementation. For @zdne to review.

@fosrias and @honzajavorek can take a look if they want.
You are missing `#include <deque>` the fact, this works is pure coincidence (it might not work on Linux or MSVC)