Move primitive names to a function.
Fairly major refactoring.

The C bindings for reading, writing, and formatting primitive values are now
first order (implemented with a switch) rather than higher-order (implemented
with function pointers).  There's now one binding for each function
(read/write/format) rather than one for each primitive type.

All the libffi bindings have been moved to the Ffi module.  The Dynamic module
is now just for memory access.  The libffi stubs are in the Ffi_stubs module.
The arg_type function has been moved from Static to Ffi.

We no longer pass libffi values around in OCaml, except at the point of
function construction.

The libffi portion of struct type creation is now performed when the struct
type is used in a function binding or closure type, not incrementally during
struct type construction.

Struct type equality is now structural, not physical (as a useful side
effect of the elimination of C values from the type structure).

Type representations for union and struct types now share common components.

The code for computing struct layout has been simplified.

Macros for testing sizes are now based on the limits of sized C99 types in
<stdint.h> rather than on literal values.  For example, we now have

    #if UINT_MAX == UINT16_MAX

rather than

    #if UINT_MAX == 65535U
Retitle Dynamic "Memory", and rename some C files.
Remove the bufferspec type; struct layout is now computed in OCaml.
Split out stubs for value printing.
Split the function pointer view evaluation into phases.
Merge pull request #66 from yallop/first-order-refactoring

First order refactoring