Move swap file ignore to top level

This will catch swap files in the top level directory and in runtime/
Add JSON description of our boxed runtime types

This describes the type ID, structure and inheritance tree of our
boxed types. This is intended as the source for generated code in the
compiler, runtime and LLVM prelude for dealing with types. Actual code
generator will follow in later commits.

Special syntax is used for the vectorLike type ID: "&32768". This means
that any type ID with its high bit set is considered a vectorLike.
vectorLike is abstract so it's impossible to directly instantiate it.
Instead, one of its subtypes with explicit type IDs must be used.

The field type system is based on LLVM IR types except for two cases:
- Procedure entry points have elaborate types (i.e. function pointers)
  that would be easier for each code generator to special case
- Booleans can only have a value of "0" or "1".  Knowing this allows
  LLVM to optimize their use more than a bare i8. We could use range
  annotations like LLVM IR does but that wouldn't translate in to
  generated C++
Add gen-types.py and generate boxedTypes.ll

This adds a new gen-types.py script that generates LLVM types as
boxedTypes.ll based on boxedTypes.json. It requires either Python 2.7 or
Python 3

Because gen-types.py and boxedTypes.json should change infrequently
after initial development the generated files are checked in to Git to
simplify the build process.
Add partial generation of C++ bindings

This extends gen-types to generate a partial C++ binding for boxed
values. This includes:
- Boxed type ID enum for concrete boxed types (typeid.h)
- Forward declarations for all boxed types (declaretypes.h)
- Type-specific data members and accessors (*Members.h)
- Checked casts from BoxedValue to its subclasses (BoxedValueMembers.h)

This also adds stub implementations of BoxedValue and ProcedureValue.
These stubs are intended as basic sanity checks on the newly generated
code; they don't have much useful functionality at the moment.
Add generation of stdlib type predicates

This builds upon the autogenerated checked casts to generate type
predicate functions usable from our NFI