Update ScalaTest to 2.9.2

Replace expectResult with assertResult at the same time to avoid
deprecation warnings
Move extractNativeFunction to its own object

(native-function) parsing is already a bit unwieldy and it's only going
to become more complex. Separate it out to its own object to contain the
complexity.
Rename string NFI type utf8-string => utf8-cstring

This reflects that the UTF-8 string is NULL terminated and thus not
NULL-safe like a boxed string is
Use an OrderedDict for storing subtypes

Otherwise generated code based on subtypes (such as type assertions)
will be unstable between runs of gen-types.py. This occasionally caused
spurious diffs after a gen-types.py invokation.
Rename st.{RealType => InexactRationalType}

This aligns more closely with the name of the boxed type and reflects
that floats/doubles can only store rational values, not all real values
Add llvmir.ElementPointerConstant

This allows the special form of getelementptr which can act as a
constant when applied to a global variable. This is required when
referencing a constant string from a constant structure, for example.
Allow passing UserDefinedType to StructureConstant

Previously the type was always the full structure layout of the
constant. Instead allow passing in a user defined type corresponding to
the structure layout. This allows for generating more readable IR
expecially for heavily nested structures such as the boxed type
representations.
Allow getelementptr with non-constant indices

For arrays and pointers non-constant indices are allowed. This is useful
for e.g. indexing an arbitrary offset inside an array. Make the
getelementptr instruction generator take a Seq of IrValues instead of
Integers.
Generate createConstant helper methods

The BoxedType.createConstant methods will generate a StructureConstant
for a BoxedType if passed the IrConstants for its embedded fields. This
is fairly low level but provides a few advantages over manual building:

- The correct typeId is automatically provided

- If named parameters are used the callers are robust against field
  order changing or even fields moving between supertypes and their
  subtypes

- Passed IrValues are checked against the expected field type instead of
  generating invalid IR
Pass around optimizeLevel as Int, not Integer

This was a simple typo referring to the Java type