Can't templatize virtual functions in C++, so visitor is no longer generic
Correctly forward-declare scoped classes
Replace objects with smart pointers
Change to C++14 (for now)
Let's try using std::shared_ptr instead of std::unique_ptr
Parser now returns AST