Added basic dialog for retrying downloads.
Added mechanisms for showing the retry download dialog.  Performing
the retry is still to be implemented.
Created DownloadableItem class to better abstract the download context
for each image.  This should make it easier to implement download 
retries.
It also allows more of the logic related to determining the cutout to be 
decoupled from the downloader.
Added get_image_uri and get_apcor_uri methods directly to the 
Observation class since the calculation is based on its fields.  
SourceReading also has these methods now, delegating to its Observation.
Removed usage of VOSpaceResolver class.
Reworked thread managment for downloads.  The same worker threads
are now re-used, pulling from a work queue.
Renamed VOSpaceErrorHandler to DownloadErrorHandler.
Retry-download feature now working end-to-end.  However, if one's 
network connection goes down it creates a flood of popups which should
be remedied.
Don't use daemonized threads because weird error messages get 
dumped if you shut down the application while mid-download.
Only allow one pop-up to retry downloads at a time.  Selecting retry 
will cause all failed downloads to be requeued.
Download threads are now daemonized to avoid them blocking the 
application from quitting when idle.  The model/download manager now
have some extra logic to wait for threads to enter an idle state before 
shutting down the application to avoid the error messages that otherwise
come with abrupt shutdowns of daemonized threads.
Merge pull request #93 from drusk/retry_download

Closes #72.