Initial deserialization code

For murphy :)

Currently only support types, will move to support actual values...
soon(tm) (hopefully tomorrow).

There is a bit of awkwardness WRT how field names are used, since there
this is pure object construction instead of using reflection. As a result
we need a bunch of string constants shared between the serialization and
deserialization process.

Currently the user defined types field is left not used, and attribute are
only referring to the user defined types as per 134. I think we should
just unroll all user types in the IR since rebuilding them will be tedious
and they will have little meaning in the backend (perhaps there is a good
reason for it that I haven't thought of?)
Fix build issues... hopefully

Copy the test folder over so gradle doesn't complain about it
LINE WIDTH!! Can we make this ~100 or something?
Renaming to const string
Merge pull request #135 from maxqchen/master

Initial deserialization code