Update to Scala 2.10.3

This is a typical bugfix release. There is no motivation for upgrading
besides tracking the latest stable version of Scala.
Use scala.util.Properties.isMac

This replaces an os.name direct comparison with a hopefully more
comprehensive and better maintained library function.
Rename GenerateCode => GenerateProgram

There will be many code generation classes. GenerateProgram will serve
as the entry point for generating an entire program. Give the class a
more informative name.
Give IrCallable sane default arguments

This is symmetric with what IrFunctionDecl has. Only the result and
arguments are required now.
Introduce nfi.NativeSignature

This is a generalization of et.NativeFunction that can also be used by
Scheme procedures generated by codegen.

At the same time generalize NativeFunctionToIrDecl to
NativeSignatureToIrCallable. This allows the same logic that generates
NFI declarations to be reused to generated the definitions for Scheme
procedures
Add "listElement" abstract boxed type

A list element is the supertype for both pairs and the empty list.
This allows more specific typing for code accepting and creating proper
lists. It allows provide a natural place for list-related methods to
live in the C++ binding.
Make sure "signed" is a boolean value in JSON

This prevents mistakes such as using "signed": "false" in
boxedTypes.json unintentionally declaring a signed integer
Rework "procedure" boxed type

- Include the captured data inline instead of pointing to a dedicated
  Closure type. All the required information can fit in to a Cons size
  with proper alignment on 64bit so this save a pointer indirection and
  Cons allocation

- Instead of tracking the pointers to our captured values, track
  pointers to pointers of captured values. This allows (set!) to work
  properly which needs to overwrite the captured value's outer pointer
  to point to a new value.

- Change the entry point to take a listElement* instead of datum* for
  stronger typing

- Remove the Closure type completely. This was the only boxed type that
  didn't correspond to a visible Scheme value so this is a nice cleanup
  of the type system