Working on Hindley Milner code

Copied in Hindley Milner implementation that someone else did as a
reference for the type system. Also worked a bit on the AST types
needed.