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
Frontend support for record types

This implements an R7RS compatible (define-record-type) with an
extension for optional typing. Recursive types are supported through a
slight hack of making vt.RecordType.fields mutable.
Add functional test for record types

These all parse correctly but explode due to lack of implementation
at the planner level and below
Support for defining TBAA nodes

This will allow codegen to define its own TBAA nodes to support alias
analysis on record types
Merge branch 'master' into recordtypes

Conflicts:
	compiler/src/main/scala/llambda/boxedtype/generated/BoxedType.scala
Add sourceNameHint to to the planner

When setting an immutable variable this is passed in when planning the
inner expression. This is intended to generate sane symbols for
non-anonymous procedures.:
Add test for records with uninitialized fields

This test ensures that the uninitialized fields are set to #!unspecific
SplitRecordType to BoxedRecordType, RecordDataType

vt.RecordDataType is the unboxed version of a record. In signatures this
means its either taking or returning a bare pointer to the record data
itself.

vt.BoxedRecordType is the boxed version of a given record. It's
different from vt.BoxedValue(bt.BoxedRecord) in that it's strongly typed
to a specific record type.
Add planner.SourceNameUniquer

This suffixes source names to make sure they're unique. This is
useful because source names from different scopes can be flattened in to
the same namespace - e.g. multiple record fields can have the same name
and there might be collision in our constructor arguments
Support for planning record procedures

This plans record constructors, predicates, accessors and mutators.
There is no intermediatevalue or codegen support so this is completely
untexted. The only visible result of this is the arity and types of the
procedures are known to the planner so it can catch certain types of
semanitc errors now.
Preserve source location when flattening lambdas
Merge branch 'master' into recordtypes

Conflicts:
	compiler/src/main/scala/llambda/boxedtype/generated/BoxedType.scala
IntermediateValue support for record types

This completes the planner support for boxed type. It also removes
support for raw record data types as there's no sane way to make
automatic conversion to/from raw data work with the garbage collector.
The current intent is to add an <unmanaged-pointer> type and add
procedures to explicitly convert records to/from unmanaged pointers
Add support for naming IrTypes

This will be used by codegen to give record data types unique LLVM IR
type names
Add boxed record type to ValueTypeToIr

All boxed records use %record* in LLVM IR. Their data will be cast to
teh required type on demand
Fix for constructors with uninitialized fields

The code was assuming all fields were initialized in the same order they
were declared instead of using the intiialized fields list.
Add _lliby_record_data_alloc

This is just a wrapper around malloc(). codegen doesn't use malloc()
directly because we don't have a  mechanism for determining the target
architecture's size_t yet.
Support for inttoptr and ptrtoint

This adds support for inttoptr/ptrtoint both in constant and instruction
form. This will be needed immediately to emulate sizeof() on record data
for allocations and later on for generating type maps.
Automatically escape LLVM IR identifiers

Now that user-provided names are being used it's very easy to break
codegen. Change EscapeIdentifier to only escape non-clike identifiers
and make llvmir use it whereever a user-provided identifier might be
emitted