Enhancements to hooks because after_request hooks are not called after abort() or exception

I added hook types 'if_exception' and 'if_abort' because hooks defined via 'after_request' aren't called if an exception is raised in a request handler, or abort() is called in a request handler.

I'm not sure if the previous behavior is on purpose. I needed to call a hook after abort()/exception() so I made this change.

Would appreciate if you reviewed, cleaned up and merge this patch.

Thanks for your great work!