The unsafe cast before would throw an exception if any other generic
parameter than `Exception` was used without passing the class reference
explicitly.
It can now also be specified whether the exception handler is to be
executed sync or async, defaulting to sync.
The user can handle exceptions of a specified type occurring in a chained
runnable by calling `executeCatching` and optionally passing a handler
function.
This is needed needed in order to gracefully stop the execution of a
runnable chain without the exception being caught by Bukkit and
resulting in it being logged as uncaught, while also allowing further
handling of the exception.