In the next commit I change conf.settings to be initialized
at runtime instead of load time and so any import of
`from lbrynet.conf import settings` will be and stay None if
it happens before the initialization.
More specific exceptions are raised when problems are encountered
looking up metadata and validating stream descriptor files, and
on the GUI those more specific exceptions are used to prevent
errors from being presented to the user.
If the user has selected the option to re-upload data for some
stream, blobs downloaded for that purpose will not be deleted
when they are finished being output. Instead, by default, for
the GUI they will be deleted when the stream is removed from
the GUI. That can be changed so they are not deleted at all,
using the lbry.conf file.
Put stream downloader options into its own class, and make stream
downloader options global to the stream type rather than specific
to each factory.
Show downloader options in the lbrynet-downloader-gui.
Make a class for downloader option choices, so that the descriptions
can be displayed.
In the console, if there are multiple choices for the download
option, make it a list selected by its index.
Make sure that the ConnectionManager closes properly when some of
the connections fail to open (e.g. due to a host being down)