Custom hash set.

Shielded now uses (unless compiled with symbol USE_STD_HASHSET) a
custom ISet implementation. This simple set uses a flat array with size
a power of 2, and places items based on a few lower bits of a banal
pseudo-hash. The pseudo-hash comes from a series of multiples of 37.
The set starts small, and increases whenever 3/4 full. This improves the
performance in all tests, by ~10%.