Use a hash function for numbers that doesn't tend to zero low bits.
Use a hash function for numbers that doesn't tend to zero low bits.

Just pulling the raw words out of a double means integers often map to
hashes with zero low bits. Then when we map that to an entry in the map,
all small integers end up in entry zero, leading to tons of collisions.

This mixes the bits around some like Java does to fix that.

Makes the map_numeric benchmark about 18% faster on my machine. On a
contrived benchmark that just uses keys up to 1000, this makes it 52x
(yes, *times) faster.

foresterre/wren,minirop/wren,minirop/wren,Nelarius/wren,Nelarius/wren,foresterre/wren,foresterre/wren,munificent/wren,Nelarius/wren,foresterre/wren,minirop/wren,minirop/wren,munificent/wren,munificent/wren,munificent/wren,Nelarius/wren,minirop/wren,Nelarius/wren,munificent/wren,munificent/wren,foresterre/wren