Add BoxedRecord type

This is currently unreferenced but will shortly be needed for codegen
Add infrastucture for record types

- Add new ValueType abstract class that divides types in to scalar
  (formerly unboxed) types, boxed types, and record types

- Replace almost all usages of nfi.NativeType with ValueType

- Add currently unused ExpressionTree nodes for record type procedures

- Add IntermediateValue.toRecordTempValue stub that will allow
  extracting record values