Start factoring out go specific parts of the parser

Parser now uses generic types.
value.String split into String and GoMarshalledString.
WIP: split out go logic from parser
Compiler fixes before go rewrite
Refactor go API