Refactor error/response handling

Refactor error handling to better match node/express convention, and make it easier to override/adapt response behavior.  All error responses are now done through the error handler instead of directly.  The error handler's signature now matches the express error signature, as well as deferring to the default handler if the errorHandler is not a method.

Notes: 
* The property of `.status` seems to be the prevalent convention for the https status of the response, over `.code`.
* These are breaking changes, but I feel necessary to offer a better and more consistent experience with the rest of node and express with this module.