Turn akka.actor.debug.unhandled on.

Have unhandled messages converted into actual Debug messages.
Change GamePlugin to an actor.

GamePlugin receives a Handle message which contains a Request instance and
returns the result as a string. For now, there is only one instance of
GamePlugin and it is supervised by BeyondSupervisor.
Make actor accessible from Context.

BeyondContextFactory.makeContext is overriden to return an instance of
BeyondContext which provides an refrence to ActorRef.
Add timer functions to BeyondGlobal.

The following 4 timer functions are added to BeyondGlobal:
- setInterval
- clearInterval
- setTimeout
- clearTimeout
Rename FunctionCall to InvokeFunction.

Use imperative verbs in messages to be consistent with exisiting messages such
as Handle.
Create GamePluginWorker.

Make GamePlugin create GamePluginWorkers (n = number of cores) and delegate
tasks to them. GamePlugin is the supervisor of GamePluginWorkers.
Change UserActionActor timeout to beyond.request-timeout.

If UserActionActor does not complete the future, ask will expire after the
timeout period, completing it with an AskTimeoutException. One second is too
short. Use beyond.request-timeout instead.
Make it easy to read Beyond configurations.

Currently, reading a configuration is too verbose. Simplify reading
a configuration by providing helper methods in Global.
Log Beyond start and stop.

Use Scala Logging's StrictLogging trait to log Beyond start and stop.
Handle AskTimeoutException.

Return a response with InternalServerError status code when AskTimeoutException
is thrown.
Change Plugin timeout to beyond.request-timeout.

If GamePlugin does not complete the future, ask will expire after the timeout
period, completing it with an AskTimeoutException. 10 seconds here is too
arbitrary. Use beyond.request-timeout instead.
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.