Install require and load GamePlugin scripts from the file system.

- Install require() function in global scope using Global.installRequire
  method.
- Load GamePlugin scripts through require.requireMain method from the directory
  specified by beyond.plugin.path in application.conf.
- Make GamePlugin export its handler function through exports object.
Replace Global with BeyondGlobal.

- org.mozilla.javascript.tools.shell.Global is too powerful for our purposes.
  Create our own Global which provides only defineClass and seal functions.
  These two functions will be used to implement Beyond JS modules.
- Extract implicit conversion functions into RhinoConversions.
Use ContextFactory.call instead of ContextFactory.enterContext/Context.exit.

It is easy to forget to call Context.exit in finally. Use the loan pattern
provided by ContextFactory.call.
Remove 'result' binding to store an intermediate result in GamePluginImpl.handle.
Setup ReactiveMongo Play plugin.

- Add ReactiveMongo plugin to SBT library dependencies.
- Add ReactiveMongo plugin to conf/play.plugins.
- Add MongoDB server list and DB name to conf/application.conf.
Use MognoReactive Play plugin.

- Get rid of MongoDB connection setup in Global because it is automatically
  handled by MognoReactive Play plugin.
- Refactor Admin with MongoController and JSONCollection.
Introduce AdminUser model with Json.format.

Json.format provides an implicit conversion from JsObject to a model class.
Rename LoginData to AdminUser and use it to retrive admin users from DB.
Eta reduction.
Omit parens in Runtime.getRuntime().

Methods hat follow JavaBean naming contract for accessors are expected to have
no side effects. The recommended convention is to use a parameterless method
whenever there are no parameters and the method have no side effect.
Reimplement ZooKeeper "stat" command with akka.io.

- Instead of using FourLetterWordMain.send4LetterWord which is blocking,
  implement non-blocking "stat" command with raw akka.io.Tcp.
- Adjust timeout and delay values: 30 seconds for server not responding
  timeout, 10 seconds for initial delay, 5 seconds for retry delay.
- Remove PinnedDispatcher from ZooKeeperLauncher because our new implementation
  is fully asynchronous.
Use the singular form of time unit for one second.

scala.concurrent.duration.DurationConversions trait provides both singular and
plural form of each time unit. Use second instead of seconds for 1 second.
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