Change Type type to contain distinct types rather than strings

That is, Type = Bool | Char | Int8 vs. "bool" | "char" | "int8"
S/Postop/PostOp/g
Implement basics of type inference

Still missing:

* Environment (ex. for function/variable types)
* Handling of operators (ex. for && that always result in a particular type)
Implement type inference for operators
Rework generator to pass environment around
Implement basic environment updating
Fix scoping, update function map in environment
Implement type inference for array literals
Merge pull request #27 from vectorlang/type_inference

Type inference