Introduce direct-mapping types for `string' and `float array'.
Merge branch 'whitequark-master'
Fix raw tests after changes to internal interfaces.
Update stub generation after pointer representation change.
No need to special-case pointers in write_arg.

The catch-all case has the same behaviour.
Pull out the selection of ctypes_call/ctypes_call_errno.
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.