Share GlobalScope among GamePluginWorkers.

Currently, each GamePluginWorker has their own ModuleScope. It makes the
recovery of scope easy because simply restarting the worker recovers the scope.

However, we implemented the timer API and will implement the Future API in a
way that these APIs don't ensure the callback is executed in the same worker.
So we decided to share the scope among GamePluginWorkers.
Seal standard objects.

Currently, BeyondGlobal doesn't seal the standard objects(e.g. Object,
String, Array, JSON and etc.).

This patch makes BeyondGlobal seal the standard objects unconditionally.
Add an interface to BeyondContextFactory to access BeyondGlobal.
Pass an ExecutionContext instance to BeyondJavaScritEngine and BeyondContextFactory.

This execution context will be used by the Future API.
Introduce the Future API.

There are 3 functions to create a Future:
- create
Create a new future with the given callback.
The callback will be execued in the execution context of the engine.
- successful
Create a future with the given value.
- failed
Create a future with the given error message.

This patch adds onComplete, onSuccess and onFailure methods to Future. These
three method take one callback function, but the argument type of the callback
function is different. These three methods return itself to help method
chaining.

See https://github.com/SollmoStudio/beyond/wiki/Beyond-Future-API for
more details.
Move JavaScriptTimerProvider to beyond.engine.javascript.provider package.
Introduce JavaScriptConsoleProvider.

Currently, JavaScript console API uses the typesafe logging library.

We extracted JavaScriptConsoleProvider interface and made it possible to
provide an implementation of JavaScriptConsoleProvider to the engine so that
JavaScriptShellConsole can directly use Console instead of the logger.

This patch is the first patch to use JavaScriptConsoleProvider.
Implement JavaScriptConsoleProvider for GamePlugin.

GamePlugin will use the typesafe logging library.
Implement JavaScriptConsoleProvider for JavaScriptShellConsole.

JavaScriptShellConsole will use Console.
Pass an JavaScriptConsoleProvider instance to the engine.
Add ScriptableConsole.

The next patch will define ScriptableConsole in the BeyondGlobal.
Use ScriptableConsole instead of PluginConsole.