refactor(Util): Enhance RunWaitUtils.

_This is a follow-up PR to #150._

Examples for `RunWaitUtils`:

~~~java
// Launch the Toolkit and retrieve the primary Stage:
if (!ToolkitApplication.primaryStageFuture.isDone()) {
    runOutside(() -> Application.launch(ToolkitApplication.class));
}
Stage primaryStage = waitFor(30, SECONDS, ToolkitApplication.primaryStageFuture);

// Setup a Stage or owned Stages:
waitFor(30, SECONDS, runLater(() -> setupStageConsumer(stage)));

// Setup Stages, Scenes and Nodes:
waitFor(30, SECONDS, runLater(setupCallable));

// Start an Application that calls stage.show():
runLater(() -> startApplicationConsumer(stage));
waitFor(30, SECONDS, stage.showingProperty());

// Start an Application or setup a Scene that require another condition.
runLater(() -> startApplicationConsumer(stage));
waitFor(30, SECONDS, () -> stage.isShowing());
~~~

The class `RunWaitUtils` contains the static methods:

`run` methods:
- `runOutside(Runnable)`:<br>Runs the given `Runnable` on a new `Thread` and returns a `Future<Void>` that is set on finish or error.
- `runLater(Runnable)`:<br>Runs the given `Runnable` on the `JavaFX Application Thread` at some unspecified time in the future and returns a `Future<Void>` that is set on finish or error.
- `runOutsideAndWait(long, Runnable)`:<br>Runs the given `Runnable` on a new `Thread` and waits for it `long` milliseconds to finish, otherwise times out with `TimeoutException`.
- `runLaterAndWait(long, Runnable)`:<br>Runs the given `Runnable` on the `JavaFX Application Thread` at some unspecified time in the future and waits for it `long` milliseconds to finish, otherwise times out with `TimeoutException`.

`call` methods:
- `callOutside(Callable<T>)`:<br>Calls the given `Callable<T>` on a new `Thread` and returns a `Future<T>` that is set on finish or error.
- `callLater(Callable<T>)`:<br>Calls the given `Callable<T>` on the `JavaFX Application Thread` at some unspecified time in the future and returns a `Future<T>` that is set on finish or error.
- `callOutsideAndWait(long, Callable<T>)`:<br>Calls the given `Callable<T>` on a new `Thread`, waits for it `long` milliseconds to finish and returns `T`, otherwise times out with `TimeoutException`.
- `callLaterAndWait(long, Callable<T>)`:<br>Calls the given `Callable<T>` on the `JavaFX Application Thread` at some unspecified time in the future, waits for it `long` milliseconds to finish and returns `T`, otherwise times out with `TimeoutException`.

`wait` methods:
- `waitFor(long, TimeUnit, Future<T>)`:<br>Waits for given `Future<T>` to be set (push) and returns `T`, otherwise times out with `TimeoutException`.
- `waitFor(long, TimeUnit, Callable<Boolean>)`:<br>Waits for given condition `Callable<Boolean>` to return (pull) `true`, otherwise times out with `TimeoutException`.
- `waitFor(long, TimeUnit, ObservableBooleanValue)`:<br>Waits for given observable `ObservableBooleanValue` to return (push) `true`, otherwise times out with `TimeoutException`.
- `waitForFxEvents(int)`:<br>Waits the given `int` attempts for the event queue of `JavaFX Application Thread` to be completed, as well as any new events triggered on it.

`sleep` method:
- `sleep(long, TimeUnit)`:<br>Sleeps the given duration.

cc: #148