Don't double "remove" an item from "dirs"

Use "elif" to only call `dirs.remove(dir)` once if both conditions are true. This is possible if a virtualenv called "test" is present, so both "test/bin/python" exists, and `dir == 'test'`. It would execute `dirs.remove('test')` twice, the second time raising an exception.
util.py: quote failed command for readability
Introduce 'retry' option

Add a 'retry' option which allows to configure how many
retries pip should make before giving up on HTTP request.

When the retries count is specified by user, its value is
passed to HTTPAdapter from requests which handles all
the underlying operations.
Special case os.devnull for PIP_CONFIG_FILE to mean 'no config file'
Merge pull request #1544 from pfmoore/devnull

Special case os.devnull for PIP_CONFIG_FILE to mean 'no config file'
'pip wheel' should download wheels, when it finds them

Conflicts:
	pip/commands/wheel.py
	pip/download.py
	pip/req/req_set.py
	pip/wheel.py
when file urls have hash fragments, check it
fixes for downloading wheels (Issue #1112)

Conflicts:
	pip/req/req_set.py
cherry-pick fixes
update changelog
pip docs refactor
Fix minor typo
Documentation for --exists-action option

Fixes #1458
Fix "it's"/"its" typo spotted by @kraai
Ensure wheel-Version is compatible with pip
Fix tests to expect installation or not
Explain futurewheel version numbers
deprecate --build and --no-clean
Merge pull request #1568 from coagulant/feature/document-exists-action

Documentation for --exists-action option
Merge pull request #1574 from qwcode/deprecate_build

deprecate --build and --no-clean