Basic coercion support 

Coercions between arbitrary pointer types, coercions through views, and coercions to void.

```ocaml
   val coerce : 'a typ -> 'b typ -> 'a -> 'b
```

Fixes #22.

More to follow.