Use a registry of known formatter classes.  This has the potential advantage of enabling user-defined formatters.  astropy.units.format.__init__ should still import all the built-in formatters to ensure they are added to the registry, so this is a minimal change.
Allow unit format names to be case-insensitive (normalizing to lowercase) and include a type check in case the format is not a valid string.
Oops--None should still be an allowed input as the default
Merge pull request #2852 from embray/units/formatter-registry

Add a silly automatic registry of known formatter classes