fix issue202 - update existing zipimporters when replacing a zipped egg

When replacing a zipped egg distribution with a different zipped egg, we make
all existing zipimport.zipimporter loaders valid again instead of having to go
hunting them down one by one. This is done by updating their shared zip
directory information cache - zipimport._zip_directory_cache.

Related to the following project issues:
  #169 - http://bitbucket.org/pypa/setuptools/issue/168
  #202 - http://bitbucket.org/pypa/setuptools/issue/202

--HG--
extra : source : b60beb7792252a39f61d7fc0f58aa04c03ddaba2
remove quick-fix comment for the solution to issue #169.

Although the original problematic use case when we are replacing a zipped egg
distribution with another zipped egg distribution is now cleanly handled by
fixing all existing zipimport.zipimporter loaders, this fix is still valid for
cases when replacing a distribution with a non-zipped egg folder.

--HG--
extra : source : efd6a8b82bafdbcfad1971b7e0f470e19191be1a
Added tag 5.0.2 for changeset 95996b713722
Bumped to 5.0.3 in preparation for next release.
Move tests.sh to a tox config

--HG--
extra : source : 0d6a065483104cc9781a3ff72c168f059ec11036
Ignore the tox folder

--HG--
extra : source : f78ffe97964c6becbf42e946bf6504e8dc09f13b
Have git ignore files created by tests

When the tests are run, some packages are installed or created in the
current directory. They should never be checked in, so add them to
.gitignore.

Change-Id: Ic7790ec85c9e2f0fc4bd06b492f75ea6c17ecda4

--HG--
extra : rebase_source : 7ad1502fd5d09d38f521a391e22af46cfce6ea4f
Add integration tests.

Set up integration tests that install packages to temporary
directories.

Change-Id: Iec90838fec961228fca24c0decc088de55303350

--HG--
extra : rebase_source : f5219f8411db4b79694a74659e22b0c0b1c771ab
update .gitignore from .hgignore

Change-Id: I6789ef2eda75748597c9ae76f2a5389140a9daab

--HG--
extra : rebase_source : 48bd79fb7ee229a89a3796df14aadbcca8ace016
fix clearing zipimport._zip_directory_cache on pypy

pypy uses a custom zipimport._zip_directory_cache implementation class that
does not support the complete dict interface, e.g. it does not support the
dict.pop() method.

For more detailed information see the following links:
  https://bitbucket.org/pypa/setuptools/issue/202/more-robust-zipimporter-cache-invalidation#comment-10495960
  https://bitbucket.org/pypy/pypy/src/dd07756a34a41f674c0cacfbc8ae1d4cc9ea2ae4/pypy/module/zipimport/interp_zipimport.py#cl-99

--HG--
extra : rebase_source : 95cff7946455f0a4422d97eecab11164a9ddef10
Activate more of the integration tests.

Change-Id: Ic3cc25a02de71b94a08f0bf64e8d8b01b572a23b

--HG--
extra : rebase_source : a49971d71570380f1ef51a88897d72328de337ed
update zipimporter cache clearing related code comments

--HG--
extra : rebase_source : c8c77d96880275e34c1580991c2d70486b6d0e00
extract duplicate code

Extracted code for collecting a list of zipimporter cache entries related to a
given path into _collect_zipimporter_cache_entries().

--HG--
extra : rebase_source : 54ab881d794f95467e811511433a2cd31595339e
extract function for updating zipimporter cache data

_update_zipimporter_cache() extracted from _uncache() &
_replace_zip_directory_cache_data().

Code cleanup done in preparation for adding a bit more detailed cache item
clearing logic, so that would not require adding a separate function with yet
more code duplication.

--HG--
extra : rebase_source : e2e956e042c7cbfabe2c31ecc58a4f76c91f40aa
clear cached zip archive directory data when removing it from cache

This is an extra safety measure to avoid someone holding a reference to this
cached data and using its content even after we know that the underlying zip
archive has been removed and possibly even replaced.

Change suggested by PJ Eby (pje on BitBucket) in a setuptools pull request #51
comment:
  https://bitbucket.org/pypa/setuptools/pull-request/51/diff#comment-2018183

--HG--
extra : rebase_source : 6de2309bc7446647749cfe78ab00e0230a07f92f
Extract embedded function as protected staticmethod.

--HG--
extra : rebase_source : 04b4807ccc7bf95d87797716f5d3488d420fa692
Moved filename resolution into _load_template

--HG--
extra : rebase_source : beb6c57dfd500432304518b9d313d1a98e2614b9
Remove unused variable and import
Mark failing tests as xfail
Merging integration tests from Doug Hellmann