Get the user panic errors in the access log.

This change moves the recover handling code to a middleware.
This new middleware runs after log, timer and recorder, in order to
collect all the necessary information for the log record.
It also runs before the user defined middlewares, and app endpoints.