Added compilation unit structure
Continuing interpretation, developing heap and object model
Making interpreter/heap less stringly-typed
Bringing together the two node types into single enum
Node kind now responsible for creating node state
Node kinds terminal by default
Changed node state to interface, merged source node tests
Void node using composition with empty state