Added exception handling for deferreds

Previously, the deferred detection would make it impossible for a subclass of `Dispatcher` to attach its own errbacks to the deferred.  This is mainly important for the sake of catching unexpected exceptions and making sure the HTTP response always gets written + finished.  The 0.0.8 version of txroutes will hang indefinitely if a handler throws an uncaught exception, when really it should write a 500 error response to the client.

To make the uncaught exception cases better, I ported over this code I was previously using in a subclass of `Dispatcher`.  Three benefits:

1. By default, it handles any kind of return type from a handler (Deferred, NOT_DONE_YET, and string response) while still catching exceptions.
2. Uncaught exceptions get written as a 500 Internal Server Error, rather than hanging the HTTP response.
3. All exception/failure logging and rendering can optionally be overridden in subclasses (e.g. to force JSON formatted output, or log tracebacks)