remove global command instances

Rework the way commands are defined, loaded and ran in pip:

 - Commands are instantiated on demand in pip.main().

 - A command 'registry' - mapping of command names to command classes in
   pip.commands.__init__.

 - Remove deferred command module loading.
add create_main_parser() and the '-V --version' option
add the base_parser argument to all Command instances
replace global OptionParser and refactor main()
make monkey-patching work again in tests/test_user_site.py

Monkey-patching 'pip.util.dist_in_site_packages' through
'sitecustomize.py' in 'tests/test_user_site.py' wasn't working unless
the fully qualitifed path to 'dist_in_site_packages' was
used.
patch dist_in_site_packages for user_site tests
Merge pull request #1 from qwcode/rework-commands-v2-qwcode

patch dist_in_site_packages for user_site tests
pep8 fixes
fix bare except statement
fix error output

`pip help <misspelled>` should return the same error message as `pip
<misspelled>`, namely:

  ERROR: unknown command "enstall" - maybe you meant "install"
align command list with options
Merge pull request #721 from gvalkov/rework-commands-v2

Rework command handling v2
update authors file for pull #721
ensure that there is a newline between usage and options
add baseparser options to the 'General Options' group
set indent_increment to 1
remove temporary fix
add missing import and remove default help option
split install options into 'Command Options' and 'Package Index Options'
add the Command.gen_opts option group

Note that commands still have to add the option group to the parser
once they populate it with options (self.parser.add_option_group).