Function coercions.
Eliminate the cost of identity coercions.
Expose coerce_fn in the public interface.
Tests for function coercions and identity coercions.
Fix arguments for ctypes_uintN_of_string functions.
Convert pointer before arithmetic.

Avoid arithmetic on void *.
Remove obsolete function declaration.
Remove another obsolete function declaration.
Use TYPE(BITS) macro consistently to construct type names.
Catch attempts to treat unstructured types as structured types.
Explicitly handle non-array values masquerading as arrays.

  (* Build a type of ints masquerading as arrays *)
  let array_view = view int
     ~read:(fun _ -> Array.make char 0) ~write:(fun _  -> 0)

  (* Build an array of array_views *)
  let a = Array.from_ptr (allocate_n array_view ~count:1) 1

  (* Coerce the array of "arrays" to a Bigarray.Array2.t *)
  let _ = bigarray_of_array array2 Bigarray.char a
Address some snprintf-related warnings with casts.
Merge pull request #112 from yallop/fix-warnings

Fix warnings
Merge pull request #111 from yallop/function-coercions

Support function coercions