[#4831] Fix run() return values

- Always return the application instance. (and fix docblock to indicate this)
- If an alternate response object is returned by an event, give it to
  the application instance.
Merge pull request #4849