Opaque hash tables

The libcork hash table type is now completely opaque; we can't embed it
in our own types anymore.