[Locator] Consistent Ketama routing.

Replaced the old routing algorithm with Ketama consistent hashing one, like in Memcached. This way,
the client could provide an optional `key` argument to Locator::Resolve in order to achieve sticky
behavior, i.e. same `key` will always end up with the same version of a service, given that service
weights are not changed.
[Locator] Dropped Snapshot ID dead code.
[Cluster] Validate remote Node IDs.
[General] More const correctness.
[API] More sanity checks in Client.
[Gateway] Thread-safe Adhoc Gateway.
Merge pull request #139 from cocaine/ketama-routing

[Locator] Consistent routing.
[Locator] Do not log stuff when no RGs are there.
[Logging] Synchronizing with Blackhole v0.3.
[Logging] Fixed deprecation warnings.
[Config] Adapt config to match Logger's changes.
[Logging] Synchronizing with current Blackhole's release.
[General] Use type-specific Karma generators.
Merge pull request #138 from 3Hren/blackhole-v0.3

Blackhole v0.3
[Logging] Simplifed logger creation.
[Locator] Always wait for Cleanup to complete.
[General] More const-correctness.
[Gateway] Debug log wording.
[Logging] Bumped the BH version.
[ASIO] Synchronize session's transport.

For super thread-safety, synchronize session's transport pointer. IT
might be a better idea to use atomic pointer operations there, but those
are not available on GCC 4.6 yet.