Print Better Error Messages on EnvironmenErrors while running pip install.
Print Better Error Messages on EnvironmenErrors while running pip install.

This fixes various issues with the current logic and splits out the
message generation into a separate unit-test-able function.

Improvements:
- Does not not-print any information in some cases
- Mentions original error message, or entire traceback if verbose.
- In case of permission/access errors, suggests the user to use --user
  and/or check permissions

rouge8/pip,sbidoul/pip,pfmoore/pip,RonnyPfannschmidt/pip,techtonik/pip,pradyunsg/pip,pradyunsg/pip,sbidoul/pip,techtonik/pip,techtonik/pip,xavfernandez/pip,pypa/pip,RonnyPfannschmidt/pip,rouge8/pip,xavfernandez/pip,xavfernandez/pip,rouge8/pip,pfmoore/pip,RonnyPfannschmidt/pip,pypa/pip