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.
I'd normally balk at the use a shortened form like "ptr" - I feel consonant-only names vastly reduce readability, especially when they're concatenated in a misguided race for the shortest types possible. Since it's in line with the STL and there's no easy alternative way of shortening Pointer, I'll let it pass. However, please keep such naming to a minimum - I don't want them littered throughout the codebase.

For the compound, stick to the much more STL-sounding "vector_ptr".