Add a six submodule that reloads bundled or system six
Hide module variables
Use a module instead of a subpackage for the import proxy
Handle the case where system six exists but __version__ is not valid
Check minimum __version__ of system six
Alternative idea--use find_module to locate the path for the six module--looking first for the unadorned 'six' module that would be found on sys.path, and failing that looking up 'astropy.extern.bundled.six'.  Then load that module using the load_module machinery, but giving it the new name 'astropy.extern.six'.  That makes everything 'just work' and is compatible with six's own sys.modules games.
Two differences over previous version:
1) Checks for bundled six over system copy *first*.  For typical user
   self-installs I'd rather Astropy use its bundled version rather than
   default to whatever (potentially untested) version is floating around
   on the user's system (which may not even be the right module named
   "six"!
2) Regardless of where the 'six' module is found, checks that its
   __version__ meets the current minimum version 1.5.0.
Fix name of the bundled six module
Slight updated to add a _SIX_SEARCH_PATH variable, making it at little easier to know what to edit.
Adds a README file for astropy/extern explaining a little more about the contents of that package, and providing instructions for system packagers for what to do with it.
Merge pull request #2623