Increase directory lookup speed

This improves lookup speed in a number of ways. The mutex locking has
been removed, which I believe is the primary culprit of the increased
lookup times. Writing new listings only happens in a single thread, so
the mutex was an unnecessary precaution.

Additionally, the listings are now hashed by service name for the lookup
method, removing all iteration from the lookup process (except perhaps
on a hash collision).
Cleanup the specs
Benchmark lookup performance
Only lookup defined services in the benchmark
Randomize benchmark servers ttls'
Adds the end timestamp to Stat#to_s output

Also adds the request size if to_s is called before the stat is stopped
to aid in long-running request debugging.
Set the request size in the server when decoding the request from the buffer

Previously this was handled only in the socket and em server/workers,
but not in ZMQ. I pulled the code out of the implementing servers and
handle it in the base server class.
Ensure the response and request sizes are populated from the common client connector at the correct time
Use double instead of mock (deprecated in latest version of rspec)
Merge pull request #114 from devin-c/fast_directory_lookups

Increase directory lookup speed
Merge pull request #115 from localshred/bj/add_rpc_stat_timestamp

Adds ending timestamp to Stat#to_s output
Bump version 2.8.1
Reference release notes in README