make all optional backends respect the cfg file
cleaning up OptionalBackendPackage a tiny bit

 - check for `if config is not None` before the try/except/pass adds
   nothing, just makes it less readable
 - much clearer to handle of the default value of the `install` variable
   with the base class and not nested in a try/except of the
   `get_config` method (and even duplicated outside of the try/except)
 - the `force` attribute (only used for BackendAgg right now it seems)
   should also have a more prominent default state in the base class
   rather than in just one subclass
move general check() method of optional backend to base class

also split up the if/else in 3 branches to show a separate message if an
configuration file backend opt-out was overridden by a forced backend
install
replace checking of configuration of optional backends in overridden check() methods by a super() call
refactoring/separating backend checks for config file/dependencies

 - config check is handled handled in optional backend base class and
   calls separate dependency check
 - dependency check is an empty stub in base class and can be overriden
   in subclasses
update list of gui backends in config template
refactoring and unifying OptionalPackage and OptionalBackendPackage
Merge pull request #2331 from megies/optional_backend_config_check

Make optional backends respect setup.cfg