hash: increase initial size of manager

This is a global cache, so start off at a reasonable size
hash: change hash function

The previous hash function was not producing a good distrubtion of keys
across buckets. To fix the problem, the new hash does two things
differently. First, it does not distinguish between a leaf and a branch
node by setting the lower-order bit. This by itself was a major
contributor to the hash function's poor performance. Second, the prime
numbers that components of the structure are being multiplied by are
chosen so that they are not close to a power of two. The closer those
primes are to a power of two, the closer the multiplication behaves like
a left shift.
Merge pull request #4 from frenetic-lang/hash

Improve hashing