An Exception is now thrown if the specified controller cannot be loaded. Other work also done.
I renamed the run method to setup, which returns an array containing an instance of the controller, the controller name and the arguments to invoke the method with. Then I made a new run method which is used to isolate the internally generated exceptions from those that might be thrown (and uncaught) by the application itself. Either way, these are caught and handled by the exception handler. If none is set, the default will be used (not made yet).
Added a shell of an exception handler.