Cleaned up util.c a bit.
Fixed incorrect return value in util.c.

This error was introduced during the recent cleanup.
Streamlined code for pointer_hash_add and pointer_hash_lookup.
Change resize factor when shrinking pointer_hash.

Previously, the code would shrink the pointer_hash to the
number of items during removal of items from the hash. This
seems to small since any addition of new items will cause
an immediate resize to 2*(number of items). Thus, I changed
the code to shrink the pointer hash to 2*(number of items).
Cleaned up run_concentration_clamp code.
Removed instances of undefined behaviour from bit fiddling code.