Solidity parser - not polished yet, but usable

First shot at the solidity parser. It generates an AST and infers and checks the types for each expression node.

Mappings and structs are parsed, but not yet integrated into the type system.
If you *must* shorten "shared_ptr" to "ptr", do it in a single place for the subproject, and place a prominent notice in the subproject documentation that you're doing in throughout as well as reasons why you're deviating from the STL types that everyone knows to something (unpronounceable) that people can only guess at the meaning of.