Refactor tests.lib.path a bit

* Add a .join() method for a more explicit joining than /
* Return values where possible
* Make glob an iterator
* Remove checks for versions of Python we don't support
* Add a write() function to make it simple to write some text
  into a file
* Add a touch() function to make it simple to ensure a file
  exists
Refactor tests.lib

* Move virtualenv creation out of TestPipEnvironment
* Remove global state and force explicit use of TestPipEnvironment
  instances
* Remove "backup" virtualenv copying and instead create new
  virtual environments each time.
* Remove the monkeypatched "PyPICache" functionality
* Remove things that were not being used anymore and were dead
  weight
* Remove sitecustomize support which was primarily used to
  monkeypatch the "PyPICache" but was used in one or two other
  tests.
Require the newest version of scripttest
We don't need to clear the virtualenv, it's a brand new directory
Use an explicit keyword
Fix the comment to be accurate
Note that things break horribly without a temp path
Revert "Use an explicit keyword"

This reverts commit 47faefcd8e7473e57259dbd1a9f84a220e5e90fc.
we'll assume '_' means '-' for versions from wheel filenames
Don't write bytecode when running tests

Writing bytecode can mess up the detection of updated files and
directories
Merge pull request #1158 from qwcode/fix_1150

we'll assume '_' means '-' in versions from wheel filenames
Don't set PYTHONDONTWRITEBYTECODE on setuptools 0.6.x
Fix the Python 3.3 issue, it only seems to happen on Travis
Merge pull request #1157 from dstufft/refactor-tests-lib

Refactor tests.lib.* to simplify and remove global state