fix/refactor checkstyle

- Renaming BUILD.tools's twitter-checkstyle target to checkstyle since this is not
  twitter specific
- Adding build-support/checkstyle/* to wire up the checkstyle
- A few longer than 100-character per line java files fixes
- pants.ini, fix/change broken [checkstyle] to [compile.checkstyle]
- pants.ini remove suppression_files setting:
  There are a couple reasons for doing this:
  1) OS pants and com.puppycrawl.tools.checkstyle only supports single suppression file.
     The multiple suppression files concept is from a Twitter internal custom filter, which
     isn't applicable here.
  2) But more important, suppression isn't a required component for running checkstyle.
     Someone can perfectly author a coding_style.xml which contains no SuppressionFilter
     filter. And right now the checkstyle internally reads suppression_files list and injects
     them into the properties, which assuming the hardcoded SuppressionFilter. Doesn't make
     any sense. Anyone wants to use suppression, can still put checkstyle.suppression.file
     into properties setting under [compile.checkstyle] in OS pants, or any company specific
     pants.ini
- Adding the checkstyle task into the optional backend so when we run PANTS_DEV=1 ./pants
  in OS pants, it's added, however, it's not by default wired up in pants release. Anyone
  can still wire it up in their own wrapper (like what Twitter currently does)
- In ide_gen, currently it tries to read suppression_files from [checkstyle]. First, like
  I mentioned above, the default open source checkstyle doesn't have multiple suppression
  files concept. Second, the current setting points to an invalid file that doesn't exist
  anyway. So instead, I'm setting it to [] for now and will follow up with ide/idea owners
  later.
- Adding unit tests for checkstyle to prevent future regressions.

Testing Done:
PANTS_DEV=1 ./pants goal compile examples/src/java::
PANTS_DEV=1 ./pants goal test tests/python/pants_test/backend/jvm/tasks:checkstyle

Travis baking:
https://travis-ci.org/jinfeng/jinfeng-pants-fork/builds/43051952

Reviewed at https://rbcommons.com/s/twitter/r/1432/
Use subscripting for looking up targets in resources_by_products

And add a test for a regression that RB 1250 caused when multiple partitions
were combined with resources_by_targets.

Testing Done:
Ran tests

Reviewed at https://rbcommons.com/s/twitter/r/1380/
CmdLineProcessor uses binary class name (http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.2.1),

https://github.com/twitter/commons/blob/master/src/java/com/twitter/common/args/apt/CmdLineProcessor.java#L653

Classes that uses CmdLineProcessor as annotation processor would fail,

"Expected classname -> path, got "com.twitter.common.args.ArgsTest$App -> ..."

This patch adds $ to the class name matching, and changed the format of compile/jvm/java/classes/deprecation_report.txt slightly so it's easier to load in testing

Testing Done:
https://travis-ci.org/pantsbuild/pants/builds/44126276 passed

Bugs closed: 868

Reviewed at https://rbcommons.com/s/twitter/r/1489/
Updates to the pants essentials tech talk based on another dry-run.

Reviewed at https://rbcommons.com/s/twitter/r/1484/
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/