Merge pull request #27 from yallop/type-printing

Generic printing for C types and values
Treat sealing empty structs or unions as an error.
Merge pull request #28 from yallop/empty-structs-and-unions

Treat sealing empty structs or unions as an error.
Add string_opt view

Sometimes a "char *" isn't actually a string, but nothing at all.
Add the 'camlint' basic type.

Values of camlint appear as OCaml ints and have the same storage requirements
as value.  The main (and perhaps only) use is for exposing Bigarray.int_elt.
sizeof (nativeint) is now sizeof (void*), not sizeof (int).
Pretty-printing of object and function types.
Unify abstract and structured representations.
Expose the camlint type in the public interface.
Record passability for primitive types.
Support for C99's complex number types.

Complex numbers are not currently passable, since libffi doesn't
support the complex types.

The names complex32 and complex64 come from the Bigarray module; we
may want to revisit that choice.
Finalisers for ctypes-allocated memory.
Tests for ctypes finalisers.