Cmds {install,wheel} should return proper error code

The `pip` executable was returning a successful status code (`0`) when
trying to install new packages with existing previous build directories.
Cmds {install,wheel} should return proper error code

The `pip` executable was returning a successful status code (`0`) when
trying to install new packages with existing previous build directories.

Conflicts:
	tests/functional/test_install_cleanup.py
	tests/functional/test_wheel.py
authors and changelog update
Merge pull request #1162 from clarete/develop

Cmds {install,wheel} should return proper error code
merge from 1.4.X
Shadow the built in tmpdir fixture to use our Path object

* Uses the same generation method as the built in tmpdir, simply
  returns a different object type.
Refactor tests.lib into classes that can be used to modify state
Use our classes from tests.lib.* in pytest fixtures
Replace explicit calls to reset_env() with the script fixture
Explicitly pass around a directory for tests.lib.local_repos
Don't depend on relative file path for test data
Hide assert_all_changes from the traceback
Work around race conditions in the code
Use pytest-xdist to distribute the tests over multiple CPUs

* We've selected a concurrency number of 16 because that's how
many CPUs the multiprocessing library tells us a Travis box has.
Remove configuration for pip mirrors
Define a hash seed for stable dictionary/set order on Python 3.3+
Use monkeypatch to force shutil to not use the fd functions
Namespace the PipTestEnvironment inside the temporary directory
Wrap the test data in a helper that will copy to the tmpdir

This is needed because the various activities that exericsing the
tests do will cause files to change inside this data directory. If
we do not make it test specific then we run into concurrency issues.
Isolate the tests from the shared data directory