Since `ptr_compare` raises Assert_failure if the OCaml objects are not structurally equal, it doesn't conform to the typical requirements that comparison functions be total (e.g. [in the `Ord` argument to `Map.Make`][map-compare]).  Let's just leave `ptr_compare` restricted to C pointers, where it's possible to give a total ordering.  We'll still have `ptr_diff` for OCaml references.

[map-compare]: https://github.com/ocaml/ocaml/blob/e34fa84/stdlib/map.mli#L49-L55