Runtime support for unspecific, bool, empty list

This follows the Llispy model of using singletons for boolean true and
false and extends it to also cover unspecific and empty list. This has
the original benefit of being able to test truthiness with a pointer
compare but should additionally reduce garbage collector load as
unspecific and empty list are common values.

To reduce code duplication in the binding a new SingletonValue class is
created that passes the GlobalConstant GC state to BoxedDatum and
deletes the new operator.

New core/constinstances.{h,cpp} are created to actually host the
singleton instances. These are also available from static methods on
their respective binding classes.

For now externally_available along with the inline definition is removed
from defines.ll. The boxed types are still in flux so hardcoding their
initialized state and type IDs seems like premature optimization.
Additionally I can't think of a case where we'd generate code that would
cause LLVM to use the inline definition.
Make compiler pass the correct stdlib to clang++

Our runtime requires C++11 features that only libc++ supports on Mac OS
X due to the ancient version of stdlibc++ shipped on that platform. The
CMakeLists.txt for the runtime already passes -stdlib=libc++ on Mac OS X
but it also needs to be passed to the clang++ our compiler invokes or
the wrong library will be linked.
Add lliby_init

lliby_init is to be called before calling any other runtime functions.
Currently it just calls setlocale() but in the future it may initialize
the garbage collector etc.

This can be done with global constructors without an explicit entry
point but the ordering is messy and fragile. An explicit init function
seems cleaner.
Add asciiOnlyHint to StringLike

Many operations such as length in characters, accessing individual
characters, etc. are O(1) on ASCII strings but O(n) on UTF-8 strings.
The asciiOnlyHint can be set by the compiler when it constructs string
it knows to be ASCII only. The runtime can then optionally use that to
accelerate certain operations.

There may be situations where it's hard or computationally difficult to
determine if a string contains ASCII characters. That means it's
possible that asciiOnlyHint is false on a string that in fact contains
ASCII characters.
Add "bool" to descriptions for bool fields in IR

Unlike C++ "bool" doesn't use a special type in LLVM IR. This means it's
ambiguous if an i8 refers to a C++ "bool" or "char". Treat it the same
way and unsigned/signed and add a special qualifier to the comment in
the generated IR.
Add simple CTest-based test support

This directly uses CTest with no additional framework support at the
moment. This is intended to test lower-level functionality such as
StringLike functionality and garbage collector internals that are hard
to directly test from Scheme. The stdlib will generally be tested from
compiled Scheme programs created through ScalaTest.