Reduced-footprint linear probing hash table.

* Refactored the linear probing hash table struct into a "light" table struct and a "descriptor" struct. The latter describes the types stored in the table (size, function pointers), and doesn't normally change during the lifetime of the hash table.
* If a large number of tables containing the same types and using the same behaviour will be created, some memory can be saved by only instancing the "light" table and sharing the descriptor between all table instances.
* The old struct now contains the new light one, the descriptor, and the opaque pointer. All old functions are shims for the new "light" table based ones but continue to work identically. The light tables are a little more awkward to use, so the "full fat" tables can be used where their extra memory use isn't an issue (or if only one instance exists in a program).
* The opaque pointer to the hash/item/bucket functions is specified on a per-call basis for the "light" API. This gives a bit of extra flexibility.
Hide xcode .xccheckout files
Avoid divide by 0 errors in the event that the capacity of a table is 0.