refactor Phase option parse: make 'goal help' info available to other tasks

It would be nice if Pants' Goal Reference doc showed our command-line flag help.
This change refactors some code out of the Help task and into helper functions.
There, a doc-generation task could reach it.
Upgrade psutil from 1.1.2 to 1.1.3.

This version has a fix for:
  https://code.google.com/p/psutil/issues/detail?id=442

Also kill obsolete build-support/python/setup.sh script that
had its own psutil version.
sample: Java Hello World += log4j
Force ascii for jar Manifest contents
Squashed commit of the following:#52 Fix the message to ./pants goal server

commit 18d0421583b7a4474b446dc8134b46eaba88f528
Author: Tejal Desai <tdesai@twitter.com>
Date:   Thu Apr 17 15:23:46 2014 -0700

    Fix the message with right command
Guard scala_library from linking itself as a dep.

In situations where we have a mixed scala-java library we
add the java_library deps into the scala_library during a linking
phase.  This linking was not filtering out the scala_library
itself, leading to a linked cycle.  Fix this and add a unit
test to verify linking semantics.
Fix plaintext reporting of non-ascii chars
Minimize the classpath pants passes to java for running tests.

This change decreases the size of the classpath pants passes to java for
running tests. It is necessary because this classpath can grow very large, and
exceed the maximum argument length on some environments.

Really the best place for this change was in
executor.py:Executor:_create_command
But the proper solution would involve changing self._command to a function
that returned a context manager (since a temporary jar would need to be
created to be used for the new classpath) and this would require refactoring a
considerable amount of code.
This fix is also a bandaid fix, as it does not ultimately solve the classpath
length problem (it only removes jars from the classpath).
Because of the fact that this fix is hopefully temporary, and a refactor now
would require another refactor when a better solution is implemented, I
instead opted to make the classpath change in the client code rather than in
the lower level java executor code.

I did not add tests/logging because I did not find any existing tests/logging
in the source (it would also probably require heavy mocking). If you think the
code needs some please let me know and I'll add it.

By Dan Davydov at https://rbcommons.com/s/twitter/r/205/
Don't auto open UI on pants server
Fix documentation now that there's no ./pants.bootstrap.
Get rid of ArgsResourceMapper.

It's twitter-internal, and not hooked up to anything right now.
Install all deps as eggs.

To skirt around IDE bugs like http://youtrack.jetbrains.com/issue/PY-6477.
docs: publish exists now, so don't warn of nonexistence. publish auth

While I was looking at it, removed a no-longer-useful "twitter" from
an error message
Cleaned up (ab)uses of _jvm_tool_bootstrapper.* by replacing them with the published methods from class Task.
While I was at it, I fixed some of the more egregious style violations.
Revert "Minimize the classpath pants passes to java for running tests."

commit f02492d4b37c812e10bded1efc3253dfc1620545
Author: John Sirois <jsirois@twitter.com>
Date:   Wed Apr 23 11:09:30 2014 -0600

    Revert "Minimize the classpath pants passes to java for running tests."

    This reverts commit aa4a419785e1d45e778292ddc67df90420f60185.

    This change breaks code that tries to re-formulate classpaths.
    A notable example is here:
      https://github.com/twitter/util/blob/master/util-eval/src/main/scala/com/twitter/util/Eval.scala#L317

    We'll attack this from a different angle.

 src/python/pants/ivy/ivy.py         | 30 +++++++++++++-----------------
 src/python/pants/java/BUILD         |  1 -
 src/python/pants/java/executor.py   | 41 ++++-------------------------------------
 src/python/pants/java/util.py       | 12 ++++++------
 src/python/pants/tasks/ivy_utils.py | 30 +++++++++++++++---------------
 5 files changed, 38 insertions(+), 76 deletions(-)

Testing Done:
None.

Reviewed at https://rbcommons.com/s/twitter/r/269/
Instead of always bootstrapping to eggs, only do this in dev mode.

commit 045a10f5c7d2f603712c901addc7e12096c415d3
Author: John Sirois <jsirois@twitter.com>
Date:   Wed Apr 23 13:01:45 2014 -0600

    Instead of always bootstrapping to eggs, only do this in dev mode.

    Since egg bootstrapping is just there to support IDEs - implying
    PANTS_DEV mode makes sense to be using, and, more importantly,
    since travis-ci runs choke on the generated eggs almost 100% of the
    time [1], just use eggs in dev mode.

    [1] pip fails like so:
      Running setup.py install for twitter.common.dirutil

        installing library code to build/bdist.linux-x86_64/egg
        removing 'build/bdist.linux-x86_64/egg' (and everything under it)
        Processing twitter.common.dirutil-0.1.3-py2.7.egg
        Removing /home/travis/build/pantsbuild/pants/build-support/pants_deps.venv/lib/python2.7/site-packages/twitter.common.dirutil-0.1.3-py2.7.egg
        twitter.common.dirutil 0.1.3 is already the active version in easy-install.pth

        Installed /home/travis/build/pantsbuild/pants/build-support/pants_deps.venv/lib/python2.7/site-packages/twitter.common.dirutil-0.1.3-py2.7.egg
        Processing dependencies for twitter.common.dirutil==0.1.3
        Traceback (most recent call last):
          File "<string>", line 1, in <module>
          File "/home/travis/build/pantsbuild/pants/build-support/pants_deps.venv/build/twitter.common.dirutil/setup.py", line 22, in <module>
            'zip_safe': True}
          File "/usr/lib/python2.7/distutils/core.py", line 152, in setup
            dist.run_commands()
          File "/usr/lib/python2.7/distutils/dist.py", line 953, in run_commands
            self.run_command(cmd)
          File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
            cmd_obj.run()
          File "/home/travis/build/pantsbuild/pants/build-support/pants_deps.venv/local/lib/python2.7/site-packages/setuptools/command/install.py", line 74, in run
            self.do_egg_install()
          File "/home/travis/build/pantsbuild/pants/build-support/pants_deps.venv/local/lib/python2.7/site-packages/setuptools/command/install.py", line 97, in do_egg_install
            cmd.run()
          File "/home/travis/build/pantsbuild/pants/build-support/pants_deps.venv/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 358, in run
            self.easy_install(spec, not self.no_deps)
          File "/home/travis/build/pantsbuild/pants/build-support/pants_deps.venv/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 574, in easy_install
            return self.install_item(None, spec, tmpdir, deps, True)
          File "/home/travis/build/pantsbuild/pants/build-support/pants_deps.venv/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 625, in install_item
            self.process_distribution(spec, dist, deps)
          File "/home/travis/build/pantsbuild/pants/build-support/pants_deps.venv/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 671, in process_distribution
            [requirement], self.local_index, self.easy_install
          File "/home/travis/build/pantsbuild/pants/build-support/pants_deps.venv/local/lib/python2.7/site-packages/pkg_resources.py", line 593, in resolve
            requirements.extend(dist.requires(req.extras)[::-1])
          File "/home/travis/build/pantsbuild/pants/build-support/pants_deps.venv/local/lib/python2.7/site-packages/pkg_resources.py", line 2251, in requires
            dm = self._dep_map
          File "/home/travis/build/pantsbuild/pants/build-support/pants_deps.venv/local/lib/python2.7/site-packages/pkg_resources.py", line 2237, in _dep_map
            for extra,reqs in split_sections(self._get_metadata(name)):
          File "/home/travis/build/pantsbuild/pants/build-support/pants_deps.venv/local/lib/python2.7/site-packages/pkg_resources.py", line 2673, in split_sections
            for line in yield_lines(s):
          File "/home/travis/build/pantsbuild/pants/build-support/pants_deps.venv/local/lib/python2.7/site-packages/pkg_resources.py", line 1949, in yield_lines
            for ss in strs:
          File "/home/travis/build/pantsbuild/pants/build-support/pants_deps.venv/local/lib/python2.7/site-packages/pkg_resources.py", line 2265, in _get_metadata
            for line in self.get_metadata_lines(name):
          File "/home/travis/build/pantsbuild/pants/build-support/pants_deps.venv/local/lib/python2.7/site-packages/pkg_resources.py", line 1329, in get_metadata_lines
            return yield_lines(self.get_metadata(name))
          File "/home/travis/build/pantsbuild/pants/build-support/pants_deps.venv/local/lib/python2.7/site-packages/pkg_resources.py", line 1321, in get_metadata
            return self._get(self._fn(self.egg_info,name))
          File "/home/travis/build/pantsbuild/pants/build-support/pants_deps.venv/local/lib/python2.7/site-packages/pkg_resources.py", line 1385, in _get
            return self.loader.get_data(path)
        zipimport.ZipImportError: bad local file header in /home/travis/build/pantsbuild/pants/build-support/pants_deps.venv/lib/python2.7/site-packages/twitter.common.dirutil-0.1.3-py2.7.egg

 pants | 35 +++++++++++++++++++++++++----------
 1 file changed, 25 insertions(+), 10 deletions(-)

Bugs closed: 81

Reviewed at https://rbcommons.com/s/twitter/r/272/
Added a maximum version to Distribution().

I encountered an incompatibility when part of the build (zinc) picked
up java 1.8 in my path instead of java 1.7. This change by itself
does not fix the issue, but lays some foundation to help pick a
distribution less than a maximum rev.

Signed-off-by: John Sirois <jsirois@twitter.com>
Use cache when chroot-dumping deps with custom repos.

This makes running ./pants tests/python/pants_test:all faster.

Before: 4m30s. After: 2m30s.
Added a maximum version to Distribution().

I encountered an incompatibility when part of the build (zinc) picked
up java 1.8 in my path instead of java 1.7. This change by itself
does not fix the issue, but lays some foundation to help pick a
distribution less than a maximum rev.

Signed-off-by: John Sirois <jsirois@twitter.com>
Remove ability to configure workdir locations.

There's no need to be able to override the location of task workdirs,
and this allows us to be rid of a bunch of flags and pants.ini keys.

After this change we compute a unique workdir per task instance, based
on the phase/goal it's registered under, and plumb that through
the task's __init__(). That did require changing __init__'s signature
on all tasks, but it made for more straightforward code.

While at it, I also fixed a bunch of superclass __init__ invocations
to use super().

This change affects many files (every task at least has its
__init__() signature changed) but the changes are mostly tiny.