Add string_opt view

Sometimes a "char *" isn't actually a string, but nothing at all.
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.