in help text for 'binary' goal, don't say "jar". Nowadays, could be a pex.

So be vague.

Testing Done:
Just in case: https://travis-ci.org/pantsbuild/pants/builds/44236259

Bugs closed: 782

Reviewed at https://rbcommons.com/s/twitter/r/1491/
Fix typo in thrift code generator name.

Testing Done:
https://github.com/pantsbuild/pants/pull/870

Reviewed at https://rbcommons.com/s/twitter/r/1493/
Simplify ScroogeGen.

It used to support multiple compilers, but no longer needs to.
This change implements a TODO to rip out that support.

This will make a future change (to switch tool registration to use
the options system) easier.

Testing Done:
Ran the scrooge unittest.

Reviewed at https://rbcommons.com/s/twitter/r/1494/
Revert "Simplify ScroogeGen."

This reverts commit 47ee133566c5a6eb2e34c7bc64a3801ee72a5a0f.
Revert "Revert "Simplify ScroogeGen.""

This reverts commit e95ccc94b7c511101bd37ea09a473ca038963d22.
Remove a broken line in ScroogeGen that was overlooked.
Prepare pantsbuild.pants 0.0.25 release.

Bump the version and add CHANGELOG entries.
Add a script to aid in prepping the CHANGELOG.

Testing Done:
Did a release dry run:
```console
$ ./build-support/bin/release.sh -n
```

Also rendered the CHANGELOG to sanity check - no warnings and looked good:
```console
$ source build-support/pants_dev_deps.venv/bin/activate
(pants_dev_deps.venv) $ rst2html.py src/python/pants/CHANGELOG.rst CHANGELOG.html
(pants_dev_deps.venv) $ open CHANGELOG.html
```

CI went green here: https://travis-ci.org/pantsbuild/pants/builds/44395335

Bugs closed: 874

Reviewed at https://rbcommons.com/s/twitter/r/1496/
Fix the ScroogeGen target selection predicate.

This also updates the release version and CHANGELOG
in anticipation of a quick release.

Testing Done:
Before this fix, reproed the current CI failures with:
```console
$ pants.dev clean-all test examples/::
...
19:52:10 00:20         [compile]
19:52:10 00:20           [jmake]
                         warning: bootstrap class path not set in conjunction with -source 1.6
                         Jmake version 1.3.8-3
                         /home/jsirois/dev/3rdparty/pants/.pants.d/gen/scrooge/java-sync/com/pants/examples/distance/thriftjava/Distance.java:32: error: duplicate class: com.pants.examples.distance.thriftjava.Distance
                         public class Distance implements TBase<Distance, Distance._Fields>, java.io.Serializable, Cloneable {
                                ^
                         /home/jsirois/dev/3rdparty/pants/.pants.d/gen/scrooge/java-sync/com/pants/examples/precipitation/thriftjava/Precipitation.java:32: error: duplicate class: com.pants.examples.precipitation.thriftjava.Precipitation
                         public class Precipitation implements TBase<Precipitation, Precipitation._Fields>, java.io.Serializable, Cloneable {
                                ^
                         Writing project database...  Done.

FAILURE: compilation error
...
$ find .pants.d -type f | xargs grep "package com.pants.examples.distance.thriftjava"
.pants.d/gen/thrift/sessions/examples.src.thrift.com.pants.examples.precipitation.precipitation.thrift/gen-java/com/pants/examples/distance/thriftjava/Distance.java:package com.pants.examples.distance.thriftjava;
.pants.d/gen/thrift/combined/gen-java/com/pants/examples/distance/thriftjava/Distance.java:package com.pants.examples.distance.thriftjava;
.pants.d/gen/scrooge/java-sync/com/pants/examples/distance/thriftjava/Distance.java:package com.pants.examples.distance.thriftjava;
...
```

After the fix the examples run green and:
```console
$ find .pants.d -type f | xargs grep "package com.pants.examples.distance.thriftjava"
.pants.d/gen/thrift/sessions/examples.src.thrift.com.pants.examples.precipitation.precipitation.thrift/gen-java/com/pants/examples/distance/thriftjava/Distance.java:package com.pants.examples.distance.thriftjava;
.pants.d/gen/thrift/combined/gen-java/com/pants/examples/distance/thriftjava/Distance.java:package com.pants.examples.distance.thriftjava;
```

CI went green here: https://travis-ci.org/pantsbuild/pants/builds/44412131

Bugs closed: 875

Reviewed at https://rbcommons.com/s/twitter/r/1497/
Fixup migrate_config to use new Config API.

When support for multiple config files was added
migrate_config broke accessing a no-longer available
`Config.configparser` field.

Testing Done:
Found the tool broken when trying to migrate twitter/commons (https://rbcommons.com/s/twitter/r/1513/):
```console
$ pants.dev binary src/python/pants/option:migrate_config
$ ./dist/migrate_config.pex ~/dev-jsirois-commons/pants.ini
Checking config file at /home/jsirois/dev-jsirois-commons/pants.ini for unmigrated keys.
Traceback (most recent call last):
  File "/home/jsirois/dev/3rdparty/pants/dist/migrate_config.pex/.bootstrap/_pex/pex.py", line 272, in execute
    self.execute_entry(entry_point, args)
  File "/home/jsirois/dev/3rdparty/pants/dist/migrate_config.pex/.bootstrap/_pex/pex.py", line 320, in execute_entry
    runner(entry_point)
  File "/home/jsirois/dev/3rdparty/pants/dist/migrate_config.pex/.bootstrap/_pex/pex.py", line 337, in execute_module
    runpy.run_module(module_name, run_name='__main__')
  File "/usr/lib/python2.7/runpy.py", line 180, in run_module
    fname, loader, pkg_name)
  File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "pants/option/migrate_config.py", line 112, in <module>
  File "pants/option/migrate_config.py", line 72, in check_config_file
AttributeError: 'ChainedConfig' object has no attribute 'configparser'
```

After this fix I was able to run the tool and migrate twitter/commons:
```console
$ pants.dev binary src/python/pants/option:migrate_config
$ ./dist/migrate_config.pex ~/dev-jsirois-commons/pants.ini
Checking config file at /home/jsirois/dev-jsirois-commons/pants.ini for unmigrated keys.
Found jvm_args in section [junit-run]. Should be jvm_options in section [test.junit].
Found no_warning_args in section [java-compile]. Should be no_warning_args in section [compile.java].
Found jvm_args in section [scala-repl]. Should be jvm_options in section [repl.scala].
Found bootstrap-tools in section [checkstyle]. Should be bootstrap_tools in section [compile.checkstyle].
Found configuration in section [checkstyle]. Should be configuration in section [compile.checkstyle].
Found warning_args in section [java-compile]. Should be warning_args in section [compile.java].
Found javac_args in section [java-compile]. Should be args in section [compile.java].
  Note: source and target args should be moved to separate source: and target: options. Other args should be placed in args: and prefixed with -C.
Found partition_size_hint in section [java-compile]. Should be partition_size_hint in section [compile.java].
Found properties in section [checkstyle]. Should be properties in section [compile.checkstyle].
```

CI went green here: https://travis-ci.org/pantsbuild/pants/builds/44441244

Bugs closed: 876

Reviewed at https://rbcommons.com/s/twitter/r/1514/
Fix python thrift generation.

constants.py always imports ttypes.  so if you have a .thrift file that only contains constants, apache_thrift_gen will generate a broken dist.

Testing Done:
Before

11:14:03 00:01       [run]
                     ============== test session starts ===============
                     platform darwin -- Python 2.7.5 -- py-1.4.26 -- pytest-2.6.4
                     plugins: cov, timeout
                     collected 0 items / 1 errors

                     ===================== ERRORS =====================
                      ERROR collecting src/test/python/apache/aurora/config/test_thrift.py
                     src/test/python/apache/aurora/config/test_thrift.py:30: in <module>
                         from gen.apache.aurora.test.constants import INVALID_IDENTIFIERS, VALID_IDENTIFIERS
                     /private/var/folders/rd/_tjz8zts3g14md1kmf38z6w80000gn/T/tmpAttv8X/gen/apache/aurora/test/constants.py:8: in <module>
                         from ttypes import *
                     E   ImportError: No module named ttypes
                     ============ 1 error in 0.14 seconds =============

FAILURE

After

11:24:46 00:01       [run]
                     ============== test session starts ===============
                     platform darwin -- Python 2.7.5 -- py-1.4.26 -- pytest-2.6.4
                     plugins: cov, timeout
                     collected 10 items

                     src/test/python/apache/aurora/config/test_thrift.py ..........

                     =========== 10 passed in 1.00 seconds ============

11:24:54 00:09     [junit]
11:24:54 00:09     [specs]
               SUCCESS

Reviewed at https://rbcommons.com/s/twitter/r/1517/
Fix missing standard file headers.

Also fix Utf8HeaderTest so it can be run in isolation. Make it be a
BaseTest since this works around issues with Config.load() in the
current state of the Config cache.

Testing Done:
After the Utf8HeaderTest fix:
```console
$ pants.dev test tests/python/pants_test:test_utf8_header
*** Running pants in dev mode from /home/jsirois/dev/3rdparty/jsirois-pants2/src/python/pants/bin/pants_exe.py ***
...
13:51:13 00:01   [test]
13:51:13 00:01     [run_prep_command]
13:51:13 00:01     [pytest]
13:51:13 00:01       [run]
                     ============== test session starts ===============
                     platform linux2 -- Python 2.7.8 -- py-1.4.26 -- pytest-2.6.4
                     plugins: cov, timeout
                     collected 1 items

                     tests/python/pants_test/test_utf8_header.py .

                     ============ 1 passed in 0.30 seconds ============

13:51:20 00:08     [junit]
13:51:20 00:08     [specs]
               SUCCESS
```

CI went green here: https://travis-ci.org/pantsbuild/pants/builds/44506276

Bugs closed: 879

Reviewed at https://rbcommons.com/s/twitter/r/1519/
python doc: "repl" and "setup-py" are goals now, don't use "py". fix 404 link

* rm 'pants py' mentions
* mention `goal repl`, `goal setup-py`
* how to pass args
* show `goal test` in covg section
* fix 404 link
* readability fixes

Testing Done:
rendered at http://pantsbuild.github.io/lahosken-demo/python-readme.html

Bugs closed: 688

Reviewed at https://rbcommons.com/s/twitter/r/1302/
Prepare a release for pantsbuild.pants 0.0.27.

This pulls in a bugfix for python thrift generation.

Testing Done:
Release dry run was good:
```console
$ ./build-support/bin/release.sh -n
```

CI went green here: https://travis-ci.org/pantsbuild/pants/builds/44511402

Bugs closed: 877

Reviewed at https://rbcommons.com/s/twitter/r/1518/
Remove an unneeded old_options use in a test.

Also fix some related missing deps.

Testing Done:
Ran the unit test and fixed dep issues until it passed.

Reviewed at https://rbcommons.com/s/twitter/r/1522/
Reimplement the jvm tool registration mechanism via the options system.

Instead of reaching in to config directly, the tool registration simply
registers an appropriately-named option, and then registers the fact
that this option is in fact a jvm tool.

The option value is a list of specs. We set sensible defaults in the code,
which are specs in a root-level BUILD.tools file.

There's one slight quirk, which is that we must the register function into
our calls to register_jvm_tool(). This is because the JvmToolTaskMixin can't
have its own register_options() method (because it comes after TaskBase
in the mro, and chained super-calls to register_options() stop at TaskBase).

NOTE: This is a larger change that I would have liked, but it's pretty easy to review, as almost every file it touches is made simpler.

Testing Done:
CI passed other than one unrelated unittest failure. Another one baking, just in case.
Doing some ongoing manual testing to see that options work.

Reviewed at https://rbcommons.com/s/twitter/r/1521/
Use Travis CIs new container based builds.

The announcement is here: http://blog.travis-ci.com/2014-12-17-faster-builds-with-container-based-infrastructure/
The specs here: http://docs.travis-ci.com/user/workers/container-based-infrastructure/

This should provide throughput benefits immediately, but even if a wash, it sets the stage for leveraging caching for
quicker and more stable builds: http://docs.travis-ci.com/user/caching/

Testing Done:
CI went green quickly here: https://travis-ci.org/pantsbuild/pants/builds/44617837

Bugs closed: 881

Reviewed at https://rbcommons.com/s/twitter/r/1523/
s/new_options/options/g

There are no 'old options' any more.

Testing Done:
unit and integration tests pass locally. Full CI baking.

Reviewed at https://rbcommons.com/s/twitter/r/1527/
LazySourceMapper and tests

A LazySourceMapper attempts to find targets which own sources without
loading any more than is needed and caches its results.

This is intended for use in tasks like what-changed or (in the future)
goals which discover target to act on (eg 'compile-changed') or other
uses cases which want to map a source file to a target as cheaply as possible.

Integration into what-changed will be a follow-up if/when this lands.

Testing Done:
./pants goal test tests/python/pants_test/base:lazy_source_mapper
https://travis-ci.org/pantsbuild/pants/builds/44622933

Bugs closed: 882

Reviewed at https://rbcommons.com/s/twitter/r/1526/
allow adding to pythonpath via pant.ini

Looks like this used to work, based on a comment (recently removed) that said:
```
"""
  To add additional paths to sys.path, add a block to the config similar to the following:
  roots: ['src/python/pants_internal/test/',]
"""
```
The provides an alternative to `PYTOHNPATH=custom/pants/stuff ./pants goal ...` when using
an in-repo custom register.py.

Note that this is unrelated to plugins distributed as dists and installed in the (virtual)env
from which pants is run / loaded with pkg_resources, or source backends packaged into a custom
dist or pex of pants.

This change restores that functionality, though it is now called `python-path` for clarity and
lives in the `[backends]` config section.

Bugs closed: 856

Reviewed at https://rbcommons.com/s/twitter/r/1457/
Enable caching in the Travis CI build.

The specs here:
  http://docs.travis-ci.com/user/caching

This turns on caching for ~/.pants.d, ~/.ivy2
and the current pants requirements bootstraped in
build-support.  To make virtualenv caching work, updates
the virtualenv bootstrap script to use a stable directory name
across virtualenv versions.

Testing Done:
CI went green here: https://travis-ci.org/pantsbuild/pants/builds/44760074

Bugs closed: 887

Reviewed at https://rbcommons.com/s/twitter/r/1537/