Refactor of the runtime package, top level interfaces and Nodyn.

Nodyn is now an abstract class and does most of the work for a given
runtime - handling the event loop and application lifecycle. The runtime
implementation is responsible for the following:

    * Initializing the runtime with globals: `Nodyn#initialize()`
    * Compiling scripts: `Nodyn#compile(String, String, boolean)`
    * Running scripts: `Nodyn#runScript(String)`
    * Loading 'native' bindings: `Nodyn#loadBinding(String)`
    * Handling exceptions: `Nodyn#handleThrowable(Throwable)`

Runtime implementations are required now to provide a factory class that
implements RuntimeFactory. The factory is responsible for creating
instances of `Runtime` and `Config`.

Added a stubbed implementation for Nashorn that is not enabled (or even
functional) yet.