Improve performance reading from network.

data_thread reads XML 1023 bytes at a time, which is silly and
inefficient. Instead, create a buffer that doubles in size as necessary
and has a more reasonable initial buffer size.

When we get gzip content, start with a buffer size larger than our
gzipped contents, since we will probably need that anyway.
Add check for __thread in configure

Native compiler support for TLS is much faster than using pthread keys
with get/setspecific.
Configuration for talking directly to rrdcached

Wires up the configuration to be able to talk to rrdcached directly over
a TCP socket.
Add in support for talking directly to rrdcached

This removes the use of pthread mutexes in the case of updating an rrd.
Note that creating a new RRD still requires locking.
Read response from rrdcached

If we want to speak the protocol, we have to read the response. This
ignores errors that come back (if they do) because I don't have a good
idea of what to do with that information.
Need to htons(3) the port from the config.
Handle issues with sockets / nbio / polling better.
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 #128 from dhobsd/dho/network-performance

Improve performance reading from network.
Merge pull request #129 from dhobsd/dho/lockless-rrdcached

Dho/lockless rrdcached
Add Concurrency Kit support to compile.
Merge branch 'master' of github.com:ganglia/monitor-core
Force CK to /usr
Merge pull request #130 from dhobsd/dho/hashtable-sanity

Dho/hashtable sanity
Remove webfrontend building from debian build
Escape value of string metric according to XML specification

When the value of a string metric contains characters ('"', '<', '>', '&', etc.),
that must not be present in XML attribute value, convert that characters
to special entities ('&quot;', '&lt;', '&gt;', '&amp;', etc...)
in the gmond status output
Merge pull request #131 from miihael/master

Escape value of string metric according to XML specification