Should catch all errors and exceptions and be properly handled.

Will handle all errors and exceptions correctly this time. 

The biggest change is registering a custom error handler to redirect all all errors as exceptions to the proper handler.

Upon shutdown (chance to catch fatel errors) we check for an error. If there is an error we will create an exception and send it to the proper handler.

So now the error, exception, and shutdown (with an error) will all execute the exception handler defined in registerExceptionHandler.