Some major changes to support caching when doing a check for
an update.  And when installing the update.

Right now, this only works from the command line (although there's
nothing preventing the GUI from using it either, of course; that
may require some additional UI to set the location).

This simplified some of the evolved code a bit.  I should do
more of that.