Add types.  Keep track of different scopes and parse accordingly.

Also parse constructors and destructors.  Because there are different
scopes now, there are a few new classes for each of the different scopes
(namespace, class, compound statement).
Add namespaces, add parentheses to expressions, add tests

Add NamespaceDecl to parse and keep track of namespaces.
Add a new ParenExpr so that expressions can contain parentheses.
Add tests and improve the test infrastructure.