Support fptrunc to, fpext to

These are the floating point equivalent of trunc to and {z,s}ext to.
These are required to support unboxed inexact rationals
Basic support for unboxed booleans, chars numerics

This knows how to track and box booleans, chars and numerics. Some very
basic stdlib functions have been exposed to verify this functionality.

Unboxing is current unsupported
Add basic vector stdlib procedures
Update old reference to SingleType

We never generated a SingleType but it needs to be replaced with
FloatType to match the LLVM floating point improvements
Build a genTypeCheck method for all BoxedTypes

This allows callers to build type checks for bt.BoxedTypes without
knowing the specific subclass. In the case of BoxedDatum we immediately
jump to the success block.
Support for casting datums to their subtypes

If the target type of a boxed datum is a subtype then generate a runtime
type check. If the check fails abort the program, otherwise use the
casted value
Typo and comment fixes
Rename LiveBoxedValue => BoxedLiveValue

This is consistent with ConstantLiveValue, UnboxedLiveValue
Add expect-failure to SchemeFunctionalTestRunner

this ensures a test fails either with a SemanticException at compile
time or an assertion is triggered at runtime. Internal or external (llc)
compiler errors are not allowed.
Move functional tests to llambda.functional

This reflects the test directory structure and should avoid name
collisions or confusion
Handle applying a function with the wrong arity

There was broken code attempting to catch this case with no unit test.
Add a unit test and fix the code to raise a new SemanticException called
IncompatibleArityException
Support for sitofp, uitofp

This will be required to convert extact integers to doubles and floats
where required.
Fix indentation in genCastToBoxed

This method was indented one level too deep
Print a newline after (write)

Newlines should be ignored by any S-expression parser when they appear
at the the end of a datum. However, this makes it easier for humans to
read, expecially when being run from a command prompt.
Support for unboxing booleans

This never does a type check or dereferences the pointer. Instead, it
relies on the fact that everything but #false is truthy in Scheme and
that #false is a singleton. This means a simple pointer comparison is
all that's required for a truthiness check
Fix genPointerTo* methods for subtypes

When calculating the getelementptr indices the supertype was not being
counted as a field. That was causing all the subtype-specific fields to
be shifted up by one.
Support for unboxing exact integers

This is straightforward as only boxed exact integers can become unboxed
exact integers. No other implicit conversions exist
Support for unboxing to float/double

This is tricky as both exact integers and inexact rationals can be
unboxed to floating point types. If the exact type is known we will
unboxed directly. However, if the type is numeric or one of its
superclasses we generate branches for both ints and rationals and then
phi the result of the unboxing together at the end.