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.