Don't try sending another error response in _handle_request_exception
if the stack context catches an error after the request is done.

(this may be related to the error discussed in the comments of #751)
Allow prepare to be asynchronous, and detect coroutines by their result.

The prepare method does not use the @asynchronous decorator, only
@gen.coroutine (or @return_future; it detects the Future return type).
The same logic is now available for the regular http verb methods as well.

Closes #605.