[Locator] Consistent 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.