Use current.configuration instead of configuration in GlobalSettings.

The purpose of the configuration in GlobalSettings is to supply a hook to
modify the configuration by overriding it on loading time. Unless Global
doesn't override it, it is just an empty configuration.

We should use play.api.Play.current.configuration if we want to read the
current configuration.
Fix style errors.
Use sbt-scalariform.

sbt-scalariform automatically fixes style errors when compiling.
Fix style errors in test code.
Add CuratorFrameworkFactoryWithDefaultPolicy.

This factory creates a CuratorFramework with the retry policy read from
configuration.
Add RoutingTableBuilder.

RoutingTableBuilder will be used by the elected leader to update the routing
table.
Add RoutingTableLeader.

RoutingTableLeader monitors /workers and updates the route table when
a worker is added or removed.

Curator LeaderSelector ensures there is only one leader at a time.
Add RoutingTableView.

RoutingTableView will be used to determine whether a request will be handled in
the current server. Each server has a hash value and handles reuqests ranged in
(hash of the previous server, hash of the current server]. If the hash of a
request is in the given range, queryServerToHandle method returns HandleHere.
Otherwise it returns HandleIn(address).

This patch extracts methods, types and a class from RoutingTableBuilder to
package object because they are used in both RoutingTableBuilder and
RoutingTableView.
Implement RoutingTableWorker

RoutingTableWorker uses Curator to synchronize consistent hash routing table.
Worker creates a sequential ephemeral node at /workers with protection mode
when it starts. Protection mode is one of the curator recipe. It adds prefix
with client id to ensure that the node is created. A worker watches the
routing table node and updates RoutingTable when the routing table node is
changed.
Broadcast UpdateRoutingTable messages to UserActionActor.

When RoutingTableWorker detects a routing table change, it sends a update
message to its parent(BeyondSupervisor). Then BeyondSupervisor broadcasts this
message to all UserActionActors.

This patch includes two refactorings:
- Move case class declarations that are sent to UserActionActor to the
  companion object of UserActionActor.
- Extract names of actors that are used in BeyondSupervisor.
Respond redirect code when the request is not in the consistent hashing range of the server.

If the hash of request is not in the current server's hashing range, the server
has to respond the address of the server that will handle this request. If a
client receives RedirectStatusCode(currently 310. I just pick one of the
redirection code not used in HTTP protocol.), the client has to retry the
address in response.

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