Fixed iteration order in hash tables

When iterating through a hash table (whether explicitly via a
`cork_hash_table_iterator`, or autoatically via `cork_hash_table_map`),
we now guarantee that the elements will be processed in the same order
that they were added to the hash table.

To support this, we need an additional doubly-linked list to keep track
of the insertion order.  This requires adding fields to the
`cork_hash_table` type.  So, I'm taking this opportunity to make that
type completely opaque.  That means that this will be a
backwards-incompatible change; all code that still embeds a copy of
`cork_hash_table`, and uses `cork_hash_table_init` to initialize it,
will need to be updated to use `cork_hash_table_new` instead.

Finally, at the same time, I've made a couple of other
backwards-incompatible changes to make the hash table API more
consistent with our current best practices.  First, the hashing and
comparison functions now take in a `user_data` parameter, just like any
other callback.  Second, the signature of the `cork_hash_table_map`, and
its `map` callback, have been reordered so that `user_data` comes first.