Fix Application::run() return values

This PR addresses concerns raised in #4831:

- `run()` now *always* returns an `Application` instance; its docblock has been updated accordingly as well.
- If an event returns a response object, it is pushed into the `Application` instance.