content-handler.js: fix incorrect call to get_buffer_from_frame

As a result, the fallback on get_recent_conkeror_window() was always
being used, which resulted in non-working downloads in the case where
the user has set browser_default_open_target = OPEN_NEW_WINDOW and the
download link results in a new window being opened by Mozilla.

Additionally, some error messages were added for cases that should not
normally occur, so that other bugs in content-handler.js will be more
easily noticed in the future.
window.js: More reliably ensure that window.close() is intercepted so that hooks can be run

Previously, window.close was intercepted only for windows created by
make_window, but not for windows created by Mozilla, e.g. due to
browser_default_open_target = OPEN_NEW_WINDOW.
Unified focus state save/restore mechanism for both buffer switching and minibuffer

This simplifies the code and makes it more robust to buffer switches
while the minibuffer is open.  This also reduces chance of bugs due to
code duplication (one in isearch.js was fixed).

This also incorporates a patch by Joren Van Onder <joren.vanonder@gmail.com>:
When opening a hyperlink with its target attribute set to "_blank" a
new buffer is opened. When there is no content handler for the
mimetype a content_handler_prompt is opened and the new (blank) buffer
is killed. saved_focused_frame then references a destroyed object.

A simple example of what used to trigger the bug (unless a content
handler for midi files is available):
<a href="a.mid" target="_blank">link</a>
window.js: Ensure that window_initialize_late_hook is run before other "late" hooks

By itself, this doesn't fix anything, but it makes more sense and may
allow for a more robust scrollbar fix.
conkeror-spawn-helper.c: redirect STDIN and STDOUT to /dev/null rather than leaving them closed

Some programs except STDIN and STDOUT to always be valid file
descriptors, and don't behave properly if they aren't available.
download-manager: allow download-show to work with paused downloads from a previous process

A new download_info object is created when the user attempts to show
such a download, instead of producing an error in the completer.

Additionally, there is now existing_download_added_hook, which is
called when a download_info object is created in response to a
download from a previous process.
reddit.js: add support for comments

Features: - scroll through comments with 'j' and 'k'
          - scroll through parent comments with 'J' and 'K'
          - vote on comments with ',' and '.'
          - automatically load more comments on end of page
CREDITS: update
reddit.js: legalese
reddit.js: whitespace, style, misc js corrections
reddit_next/prev_comment: use node.parentNode instead of node.parentElement

node.parentElement is a DOM4 field, and isn't available in mozilla
versions earlier than 9.0.