Move ZooKeeperLauncher.config initialization code into one block.
Fix JavaScript style errors.
Refactor admin page templates.

- admin_common: a common template for pages without header menu.
- admin_main: a common template for pages with header menu. It internally uses
  admin_common template.
Add AuthenticatedAction.

AuthenticatedAction redirects to the login page if the user is not logged in.
Add admin user list page.

This page shows all admin users stored in the database.
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 configuration by overriding it on loading time.
Unless Global doesn't override it, it is just empty configuration.

Use play.api.Play.current.configuration, if you want to read current
configuration.
Add CuratorFrameworkFactory.

This factory reads retry policy from config and starts a new connection
with the retry policy.
Add RoutingTableBuilder.

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

RoutingTableLeader monitors WorkersPath and updates route table when
worker is added or removed.

Curator LeaderSelector ensures only one leader works at the same time.