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 used by
one thread.

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.