Implement complete binding

As I've notified in #4, I went on to complete the binding. Unfortunately, I had to rewrite it almost entirely.

As a result it supports all NaCl primitives (not generic_hash or short_hash yet), is fully covered by tests, documented, and doesn't crash under heavy GC pressure.

I have changed the external interface. In my view, now it is both more convenient to use and more elegant to implement.

This PR depends on ocamllabs/ocaml-ctypes#143, not yet merged.