Add BUILD files to pants

This adds BUILD files to pants.  I've added what I feel to be the minimum
number of additional changes to give BUILD sanity (this means doing imports
directly from modules rather than parent modules in virtually all cases.)

There are a lot of # XXX(fixme) that should be cleaned up in subsequent
reviews.  There's some clear spaghetti that should be fixed (for example,
cross / quasi circular dependencies between base, reporting, goal, task,
etc.)  Adding BUILDs has just made that more obvious than ever.

Testing Done:
PANTS_VERBOSE=1 ./pants py src/python/twitter/pants/bin:pants_old -- tests/python/twitter/pants:all

Reviewed at https://rbcommons.com/s/twitter/r/32/
Add .gitignored ivy BUILD

Reviewed at https://rbcommons.com/s/twitter/r/44/
Re-establish conservative locking logic circa
  https://github.com/twitter/commons/blob/677780ea56af610359b3ccb30accb5b9ecd713d8/src/python/twitter/pants/goal/group.py
Squashed commit of the following:

commit 62c459b1999207a7fd98577fab09d34db5ba3951
Author: John Sirois <jsirois@twitter.com>
Date:   Tue Mar 4 10:17:37 2014 -0700

    Kill unused cruft.
Squashed commit of the following:

commit 983d2aa31f1448c971c5b902a0d9ba4cfd80fac3
Author: John Sirois <jsirois@twitter.com>
Date:   Tue Mar 4 10:05:26 2014 -0700

    Add a basic ci script.

    This allows for local emulation of ci whatever that happens to
    currently mean.
Beef up the cotributor's howto a bit.

Add a section on vetting a change before diving in.

Add an addendum to the review posting section that outlines
how to preview CI results with the ci script.
patch pkg_resources while the working_set is activated.

i was unaware of the existence of pkg_resources.working_set, but this is
apparently what a number of pkg_resources methods rely upon to handle
distribution finding and entry point management.  how i managed to miss this
for so long escapes me.  hooray for no documentation whatsoever.

this changes:
  1. pulls the PEX_INTERPRETER / no-entry-point code into PEX.execute_interpreter
  2. makes PEXEnvironment return the WorkingSet following .resolve
  3. adds a pkg_resources patching contextmanager to patch working_set and its
     associated methods for the duration of the PEX execution

for more background on the working_set patching, see:
https://bitbucket.org/pypa/setuptools/annotate/8e8c50925f18eafb7e66fe020aa91a85b9a4b122/pkg_resources.py?at=default#cl-2752

Testing Done:
mba=twitter-commons=; ./pants py -r rbtools==0.5.7 -e rbtools.commands.main:main -- post -o -g

Reviewed at https://rbcommons.com/s/twitter/r/52/
memoize calls to pkg_resources.build_zipmanifest

This addresses
https://bitbucket.org/pypa/setuptools/issue/154/build_zipmanifest-results-should-be

We have some .pex files with 30+ egg dependencies.  They now take 5-10s just
to start.  This drops their startup time back to pre-regression levels.

Testing Done:
mba=twitter-commons=; build-support/bin/ci.sh
...

== CI SUCCESS ==

Reviewed at https://rbcommons.com/s/twitter/r/53/
Squashed commit of the following:

commit 59b2827c4ae571f89c059bd85d4bd16b02a1d9c1
Author: Larry Hosken <lhosken@twitter.com>
Date:   Tue Mar 4 11:46:54 2014 -0800

    doc scripts: this might work in BSD
Improve python dependency resolution in pants

This reworks dependency resolution in pants to follow the Python Way??? more
closely.  It also fixes the "bug" that Patrick Lawson was reporting:
Squashed commit of the following:

commit 87ebfc26213571ce40d735a8fd22f1382a8ab90d
Author: Larry Hosken <lhosken@twitter.com>
Date:   Tue Mar 4 11:23:28 2014 -0800

    sigh. getting steps in the correct order is hard

commit 8bf991e27196f59a71e1c7891de85631c6c7f61d
Author: Larry Hosken <lhosken@twitter.com>
Date:   Tue Mar 4 11:19:52 2014 -0800

    default git merge got stuff out of order. Obviously needs machine learning.

commit 3d45710ab55e1630f2ad40f0ad76355b2f4fa96c
Merge: 316d5b6 50017a6
Author: Larry Hosken <lhosken@twitter.com>
Date:   Tue Mar 4 11:13:45 2014 -0800

    Merge branch 'master' into lahosken_rbtdoc

commit 316d5b6b649370cd02502f068099e1ff9e3f782e
Author: Larry Hosken <lhosken@twitter.com>
Date:   Tue Mar 4 10:09:27 2014 -0800

    excellent feedback is excellent

commit e23ac4fe4ad1445494664442840eb56dd5a24583
Author: Larry Hosken <lhosken@twitter.com>
Date:   Tue Mar 4 08:58:03 2014 -0800

    clarify: don't doublecheck mail arrival always. just the first time

commit 0bdb4e20e4ebd7efc3ed8dc7c315add827121171
Author: Larry Hosken <lhosken@twitter.com>
Date:   Tue Mar 4 08:53:47 2014 -0800

    docs: contrib mention ./rbt wrapper and rbcommons pitfalls
Squashed commit of the following:

commit 1c3e16e08ca3e65748fd990158d907f10d895340
Author: Larry Hosken <lhosken@twitter.com>
Date:   Tue Mar 4 12:52:58 2014 -0800

    doc: tag some code-includes as Python

commit a40179e2d52dd470fdc9ad6c0ebfa71b7147ffc3
Merge: 98307ef 2d8550e
Author: Larry Hosken <lhosken@twitter.com>
Date:   Tue Mar 4 12:51:02 2014 -0800

    Merge branch 'master' into lahosken_thriftexnopp

commit 98307ef7d5fef74706344b4da49a76651b3689aa
Author: Larry Hosken <lhosken@twitter.com>
Date:   Mon Mar 3 14:20:58 2014 -0800

    docs: don't include pingpong_thrift, it's 404. instead, precipitation

commit 8f91fafa2977da9589c0f89cddd51e4165caf728
Author: Larry Hosken <lhosken@twitter.com>
Date:   Mon Mar 3 11:30:46 2014 -0800

    thrift docs: use pants-y example, not commons-y example
doc: don't use git's default squash-merge message
docs: mention ci.sh near where we talk about pants:all
doc: tutorial += mention ./pants.bootstrap.

Eagerly looking forward to removing this mention when Pants can
download itself.
Add a transitional pants-packaged target graph.

This adds a set of targets that form a monolithic pants to bridge
past the period where we refactor code and target cycles.  It also
adds a rudimentary test that the pants-packaged target graph
continues to work for publishing pants.
kill the distiller.  build eggs using setuptools.  add wheel builder.

At a high level this review:
  1) Kills the distiller (the reasons we had it (recursive zipimporting) are no longer relevant)
  2) Uses setuptools directly to build eggs (and with a few extra lines of code extends this to
     build wheels.)
  3) Augments PythonInterpreter to be aware of 'capabilities' -- i.e. requirements that it can
     resolve
  4) Augments PythonInterpreterCache to be aware of capabilities

Wheels still can't be used -- that requires a full implementation of PEP425
tag matching, which is a subsequent review.

Testing Done:
build-support/bin/ci.sh

Reviewed at https://rbcommons.com/s/twitter/r/55/
Fixup local repos.
pants PythonTargets should walk provided PythonBinary artifacts

The change to .resolve for PythonLibrary to extend to its binaries in the
case it specified a PythonArtifact caused a regression with pants py.
Instead we should just augment _walk to walk those targets so that they're
properly reflected as members in setup_py.

Reviewed at https://rbcommons.com/s/twitter/r/57/
docstring: thrift_library only publishable in alternate universe