Add top-level printing for OCaml values:

   # let s = ocaml_string_start "abcde";;
   val s : string Ctypes.ocaml = "abcde"
   # s +@ 2;;
   - : (string, [ `OCaml ]) Ctypes.pointer = "abcde" [offset:2]
Add top-level printing for OCaml types:

   # ocaml_string;;
   - : bytes ocaml typ = char*
Use 0, not NULL, since 'value' has integer type, not pointer type.
Test for creating arrays with an incomplete element type.
Introduce an internal function for raising Unsupported using format strings.
Include a number in the generated stub name to avoid clashes.

It's now easier to bind the same C function twice at different types.

Update tests to remove workarounds for name clashes.
Mark OCaml values as 'alloc', since references are boxed.

In practice, OCaml types can't be used as return types, so it doesn't
much matter whether they're marked as 'alloc'.
Stub support for passing values directly to C.
Tests for passing OCaml values directly to C.
Tests for sizeof and alignment for ocaml_string.
Test (lack of) support for using ocaml_string as a struct or union field.
Test (lack of) support for using ocaml_string to build arrays.
Tests support for pointer arithmetic on OCaml values.
Test that OCaml values aren't addressable.
Test that OCaml types can't be used as return types.
Test printing of the ocaml_string type.
Test printing of ocaml_string values.
Test (lack of) coercions between ocaml_string and other types.
Test (lack of) support for accessing ocaml_string values through pointers.
Test (lack of) support for higher-order functions involving ocaml_string.