Allocate hash buckets sanely.

We have an array of buckets; this only requires one level of indirection
and much less initialization. The current situation underperforms
and confuses unnecessarily.
Improve hash table implementation:

 1) Get rid of "case-insensitive" metrics. I don't think these ever
 actually hit, but the code is silly. If we need it, we can normalize
 the data going into the table.

 2) Get rid of silly hash algorithm. Use MurmurHash. This isn't the
 latest / fastest version, but it's still much faster than what was
 there.

 3) Stop using division to find the bucket. Get rid of hash_prime, and
 size buckets to nearest power of two. This allows us to use bitwise
 arithmetic for the modulus.

 4) Get rid of silly rwlock implementation. Pthreads has a portable
 rwlock now, but ck's rwlock performs better.

 5) Get rid of per-bucket locks. I'm not convinced that the granularity
 is worth the overhead.

 6) Get rid of buckets. The "node" structure is effectively a bucket, so
 we can treat it like one. This reduces the amount of indirection we
 have to do before we find our data.

 7) Pad our bucket structure so that it won't split cache lines when
 iterating. This improves performance when iterating over buckets.
Fix some bugs after switching to new bucket impl
Bring back per-bucket locking

It turns out that this *is* actually better for an interactive gmetad.
Merge pull request #130 from dhobsd/dho/hashtable-sanity

Dho/hashtable sanity