Embed a copy of the Boost preprocessor library

Rather than trying to hack together my own preprocessor helpers, let's
just use the experts' one.  To avoid naming clashes, all of the header
files have been renamed from boost/preprocessor/foo.hpp to
yardarm/preprocessor/foo.h, and each public symbol has been renamed from
BOOST_FOO to YA_FOO.
Use Boost preprocessor library

The macros that create runtime type descriptors from the compile-time
type descriptors now use our embedded copy of the Boost preprocessor
library.  Their implementation is a good bit simpler now, and this will
let us write more complex macros fairly easily.
Merge branch 'feature/boost-preprocessor' into develop

* feature/boost-preprocessor:
  Use Boost preprocessor library
  Embed a copy of the Boost preprocessor library
struct descriptors

This patch adds preprocessor macros for defining a compile-time
descriptor of C `struct` types.  It also includes descriptors for each
of Yardarm's `struct` types.
Set library version correctly

We were using SOVERSION to set the full build version of our shared
libraries.  SOVERSION should only contain the first number of the build
version triple.  The VERSION property is what should contain the
library's full build version.  Also, the CMake build file now includes a
description of when and how to update the library version.  (It
*shouldn't* match the package's release version.)
Don't use GLOB to detect library source files
Better CMake 2.6 support

I guess the default output directory for configure_file in 2.6 is the
root, not the current binary directory.
Opaque types

You can now describe an opaque type; one where we don't know any details
about its internal representation.  There will be several things we
won't be able to do with an opaque type; but we'll at least be able to
identify it.
Merge remote-tracking branch 'template/c-template' into develop

* template/c-template:
  Better CMake 2.6 support
  Don't use GLOB to detect library source files
  Set library version correctly