Fix #478 #455 #514: Call before/after_request hooks on errors, too.

This changes undocumented behaviour in some ways:
- Hooks are no longer implemented as plugins.
  route(skip=True) will not skip hooks anymore.
- Mounted apps now trigger hooks defined in the root app.
- before_request hooks no longer have access to request.route, because
  the routing happens after the hook.
Fixed python 2.5 bug in tests.