Improve error handling

:eyeglasses: @madbook 

* Renders a /404, /500, etc page if available, if not debug mode (you can set up routes for /4* or /404 or whatever specifically from a plugin)
* If debug mode, prints errors to console and json output
* Gives mostly accurate line numbers and stack traces
should probably rename this to something more meaningful than `noop` if it actually does things :)