Add Rhino to SBT library dependencies.
Add Plugin controller to handle all requests coming to /plugin/*path.
Change the check level of NullCheck from error to warning.

We can't avoid using null when calling Java methods expecting null as a valid
value.
Implement a simple plugin system for game logic.

GameLogic allows Beyond users to write game logics in JavaScript. It accepts an
incoming request to the plugin path and returns a response.

This is a proof-of-concept implementation, so plugin path and scripts are all
hardcoded. Also there is no way to register a plugin. More patches will follow.
Move GamePlugin traits, classes and objects to beyond.plugin package.
Turn off JavaPrimitiveWrap.

By default, Rhino wraps results of Java method into instances of String,
Number, Boolean and Character. Thus scripts can access any Java method
available in these objects. But this is annoying in most cases.

Turn this behavior off and make these instances available directly as
JavaScript primitivie type by calling setJavaPrimitiveWrap(false) in
BeyondWrapFactory. Also override ContextFactory.onContextCreated to use
BeyondContextFactory.
Make JavaScript features configurable.

Change the constructor of BeyondContextFactory to take a list of features and
override ContextFactory.hasFeature to enable these features.
Use org.mozilla.javascript.tools.shell.Global.

Use Global as our global scope instead of calling initStandardObjects() by
ourselves. This is temporary because eventually we want to define our own
gloabl scope class by extending org.mozilla.javascript.TopLevel.

Also use the loan pattern provided ContextFactory.call(ContextAction). This is
safer because we don't need to call contextFactory.enterContext() and
Context.exit() manually.
Isolate the execution of a plugin into a ModuleScope.

Create a new ModuleScope for each game plugin. This prevents pollutions of the
global scope.
Compile and execute the script instead of evaluting it.

We can cache compiled scripts for faster execution later.
Move global initialization code to GamePlugin object initializer.

Global initialization needs to be done only once. Move it to GamePlugin object
initializer. Then, there is no need to check global.isInitialized before
global.init(contextFactory) because it is guaranteed to be called only once.