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
Added variable reference expression
Renamed isSynthesizable et al
Renamed Variable::setValue to Variable::setValueExpression
Added VariableAssignmentExpression
Fixed checkstyle warnings
Merge pull request #137 from manifold-lang/expressions

Added VariableAsignmentExpression and VariableReferenceExpression
Node/Connection deserialization

Deserialization for nodes and connections! I only did some basic testing
but everything seems to be good.

Attributes are pretty FUBAR and we definitely need to refactor how they
work in the future, but as far as I know they're not necessary for our
MVP.

Constraints are also still pending.
Basic attribute bindings

Quickly threw this together, of course it could be much better...

I think we want some kind of method like TypeValue#createInstance(...)?
Would make this a lot easier
checkstyle pls...
adding boolean check
Merge pull request #138 from maxqchen/master

Node/Connection deserialization :shipit: