Add MutableRoutingTable and RoutingTableView.

These two class are to manage consistent hash used by Game Server for
load balancing.

MutableRoutingTable will be used by one elected leader to update routing
table.

RoutingTableView will be used by all workers to sync routing table.
Each server handles range in (hash of previous server, hash of current
server]. If requested hash is in range, queryServerToHandle method
returns HandleHere. Otherwise returns RedirectTo(address)

MutableRoutingTable and RoutingTableView has hash to address information
as immutable TreeMap.

RoutingTableView has volatile variable, to ensure visibility between
threads. But MutableRoutingTable is not volatile, becuase it is not
shared between threads.

And this patch add test cases for RoutingTableView.
Add CuratorConnection.

CuratorConnection inherits Closeable, to have the same interface with
object in Curator.
Add route.Leader.

This class is to manipulate routing table. Curator LeaderSelector
ensures only one leader works.

If Leader takes leadership, it monitors `workers-path' and
updates router table when worker is added or removed.
Implement RoutingTableWorker

Worker uses Curator to sync consistent hashing routing table.

Worker creates sequential ephemeral node at `workers-path' with
protection mode when it starts. Protection mode add prefix with client
id to ensure that node is created.

Worker watchs `routing-table-path' and updates RoutingTable when
`routing-table-path' node is changed.

`workers-path' and `routing-table-path' is in application.conf.
Response redirect code when the request is not in consistent hashing range of the server.

If the hash of request is not in current server's hashing range, the
server have to response the address of server that will handle this
request.

If a client receives RedirectStatusCode(currently 310. I just choose one
of the redirection code not used in HTTP protocol.), The client have to
retry the server in response.

This patch also moves hashing method to RequestWithUsername from
BlockAndRequest. BlockAndRequest uses hashing method in
RequestWithUsername.