basic IR class structure
simple test cases demonstrating the use of ExprTypeVisitor
move definition classes around and add simple tests for Schematic
improve test cases for Schematic and add default type defs
actually add test cases for Schematic
add kind field to MultipleDefinitionException
this allows the throwing class to specify what kind of object was
multiply defined
extract Definition superclass
coding style: reformat single-line thrown exceptions to use braces
add Definition superclass
rework primitive types as enums and not instances of classes
rename InternalError to UndefinedBehaviourError
add "from" and "to" members on Connection,
and parent-Node member on Endpoint
add test cases for addEndpointDefinition()
add tests for Node, Connection, Constraint definitions in Schematic
reworked ExprTypeVisitor; visit() and accept() were backwards
nit: fix spacing
constraints are no longer associated with expressions

(this means they are treated like black boxes until the backend,
similar to nodes/connections/etc. are now)
add undefined behaviour checks 
(setting type more than once, setting type to null)
add ArrayType
refactor Literals out of org.whdl.intermediate.expressions
and into org.whdl.intermediate