Fixup the ./pants script by grabbing just the md5 value
Add pep425 tagging support to twitter.common.python

This adds PEP425 tag iteration to twitter.common.python:
http://legacy.python.org/dev/peps/pep-0425/

Wheel platform tags are encoded in this fashion and is the standardized way
to determine whether or not a wheel distribution is compatible with the
current platform.

Reviewed at https://rbcommons.com/s/twitter/r/87/
factor all twitter.common.python test helpers into twitter.common.python.testing

this is part of the effort to pull all python_library targets out of tests/python

Reviewed at https://rbcommons.com/s/twitter/r/91/
doc: want to publish an artifact? publish ALL the things. maybe. many, anyhow
comment: publishing the docs? use ssh url, it's way smoother
Add RuntimeError if we fail to write pkg_resources into the .pex

Reviewed at https://rbcommons.com/s/twitter/r/115/
Pin the pants binary to osx and linux platforms.

Also update to coverage 3.7.1 which has a good set of
osx and linux eggs deployed at:
  https://github.com/twitter/commons/blob/binaries/pants/third_party/python/dist/
Add wheel finders and restore the patched egg finder.

pkg_resources/setuptools doesn't come with wheel finders the same way that
it comes with egg finders out of the box.  This establishes parity between
egg and whl support in pkg_resources.

This also fixes a nasty bug where resource_listdir/resource_stream failed to
work for eggs within .pex files -- we managed to skirt by most issues since
almost all eggs that we were reading resources from were marked as
not-zip-safe and we were falling back to the disk-based egg
metadata/resource provider.  See FixedEggMetadata and the corresponding
linked setuptools issue.

Reviewed at https://rbcommons.com/s/twitter/r/86/
create a Package abstraction for twitter.common.python

This takes ExtendedLink and turns it into a Package abstraction.  This is
the biggest change necessary to move over to supporting both Eggs and Wheels
together.

High level code summaries:
  1. move most of http/link.py to package.py
     a. ExtendedLink -> Package
     b. SourceLink -> SourcePackage
     c. EggLink -> EggPackage
     d. a lot of s/link/package/ (accounts for most of the minor line changes.)
  2. Package .satisfies and .compatible are two separate concepts now (one is
     requirement specific, the other is platform/py version specific)
  3. Fixed Obtainer abstraction leakage and generic-ified 'package precedence'
     (this is similar to how pkg_resources does it.)
  4. Moves Platform.distribution_compatible to package.py since that's where the
     concept belongs

The only remaining CL is adding WheelPackage and it's very minor (~100 line
diff on top of this.) NOTE: this is rebased off the merge of r/86 + r/87 +
r/91.

Testing Done:
git clean -fdx && ./pants.bootstrap tests/python/twitter/pants:all -v

Reviewed at https://rbcommons.com/s/twitter/r/92/
Make sure zinc gets a change to account for deleted/moved source files.
Add some extra timings to pants.
doc: pants.bootstrap -> pants

    also, don't imply there's just one goal
Improve scrubbing of namespace packages

Problem: since we can't force python -S using /usr/bin/env, we can't prevent
importing site.  But 'import site' populates sys.modules with placeholder
modules containing .__path__ attributes with site-packages baked in.  This
means even if we scrub sys.path and sys.path_importer_cache, it's still
possible for __import__ to pick up things from site-packages.  This scrubs
sys.modules as well.

Reviewed at https://rbcommons.com/s/twitter/r/116/
Fix cross-device symlink bug.
Check correct config section for python-setup options

config.getdefault() will only check in the [DEFAULT] section.

Signed-off-by: John Sirois <jsirois@twitter.com>
doc: howto_contribute += ask an rbcommons admin to add your acct to the group
doc: fix build dict entries for some py things
Do not use PANTS_DEV when running tests.

See https://groups.google.com/d/topic/pants-devel/fuZ4WaAPxRk/discussion for background.

Reviewed at https://rbcommons.com/s/twitter/r/126/
De-dup sources and report this.
Correctness fix for ScroogeGen - namespace_map's were not being translated for uniform equals behavior.