Get rid of bridgedb.Main.CONFIG_DEFAULTS dict.

 * REMOVE dictionary bridgedb.Main.CONFIG_DEFAULTS of config settings. These
   are already set, so I don't know why they should be duplicated here.

 * REMOVE method bridgedb.Main.Conf.setMissing(), which did nothing except for
   set the config items to the settings from the above mentioned dict if they
   were missing.
Remove bridgedb.Main.CONFIG dictionary.

 * REMOVE the hardcoded dict CONFIG from bridgedb.Main, it is not used
   anywhere, most of the settings are outdated at this point, and all of the
   settings are in the main config file, bridgedb.conf.
Minor PEP8ification of bridgedb.Main module.
Fix logs in bridgedb.Main to record the filename that was used.

There were a couple loglines in bridgedb.Main, most of them for when the
descriptor files are opened/closed, which did ``os.path.abspath`` on the
filename string taken from the config, and then logged statements like
"Opening something something file: %s" with the absolute path. On the next
line, the non-absolute path of the filename is opened.

 * CHANGE log statements to record paths as they are passed to open().
Remove a log statement from bridgedb.Main.

Because of the duplicate bridge problem we've been having, this log statement
was causing nearly every bridge fingerprint to get recorded to the logfiles
every 30 minutes (when BridgeDB is SIGHUPed).

 * REMOVE a log statement.
Fix a bug where bridgedb.Main only opens one extra-info file, not both.

The old config item, EXTRA_INFO_FILE, was changed to a list, EXTRA_INFO_FILES,
some time ago, in commit 5c86df37fa1938508144bb52c971a3c31be0b310. However,
the config item searched for in bridgedb.Main was not, causing the extra-info
descriptor files not to be read.

 * CHANGE bridgedb.Main to read extra-info descriptor filenames from
   EXTRA_INFO_FILES config setting, not EXTRA_INFO_FILE.

 * FIXES bug causing extra-info files not to be read.
Catch potential KeyErrors on bridge ID lookups in bridgedb.Main.

We should catch the KeyError here, as sometimes this loop gets a bridge ID
from an extra-info descriptor and tries to lookup the bridge, causing a
KeyError on the lookup.

 * ADD try/except wrapper to catch KeyErrors on looking up bridges by ID in
   the bridges dict in bridgedb.Main.load().
Make bridgedb.Main._reloadFn placeholder take any arguments.

 * ADD a docstring to it, not that it is no longer a lambda function.
Expand ~s and get the abspath for proxy list files.
Change an assert to a check+log in bridgedb.Main.

This is done so that if BridgeDB is run with higher-than-default optimization
levels, i.e. ``python -O2`` (which strips out assert statements), then the
problem will still get logged.

 * CHANGE an assert statement which checks that a
   ``Bridges.PluggableTransport`` added to a ``Bridges.Bridge.transports``
   list actually got added, into a more explicit, non-assert check with a log
   statement if it fails.
Configure and start logging ASAP in bridgedb.Main.

This is the earliest point at which we have everything we need to call
configureLogging(); we probably should not delay it, otherwise we risk losing
information on anything happening earlier.

 * MOVE call to bridgedb.Main.configureLogging() to be as early in the code as
   possible.
Don't create new loggers in modules loaded into bridgedb.Main.

If these create their own loggers, and/or are imported as absolute imports
specifying the full package name, then the new loggers get created before the
root logger is configured.

 * REMOVE logger creation in bridgedb.parse.headers and bridgedb.crypto.
Add loadConfig function for reloading .conf on top of settings.

The .conf file must be loaded on top of the configuration instance as it
exists in memory, otherwise settings will not be persistent.

 * FIXES part of #9277.
Remove unused imports from bridgedb.parse.headers.
Fix bug resulting from use of fd.close() instead of os.close(fd).
Change formatting of two logs in bridgedb.Main to use '%' syntax.
PEP8ify one line in bridgedb.Main.startup().
Add additional log statements to bridgedb.Main.startup().

 * ADD additional log statements to notify when each distributor is setup and
   when config options are changed on the config instance.
Add docstring and use loadConfig() in reload().
Move subCommand handling code to separate function in bridgedb.Main.

 * MOVE code for running options.subCommands and dumping bridge assignments to
   file to a new function, bridgedb.Main.runSubcommand().