Expose types needed to specify jvm_binary.deploy_jar_rules.

This also fixes up the pydoc strings to get full BUILD dictionary
linkage from jvm_binary through jar_rules to Skip and Duplicate.

Testing Done:
$ ./build-support/bin/publish_docs.sh -opd jsirois

See here:
http://pantsbuild.github.io/jsirois/build_dictionary.html#jvm_binary
http://pantsbuild.github.io/jsirois/build_dictionary.html#bdict-jar-rules
http://pantsbuild.github.io/jsirois/build_dictionary.html#bdict-skip
http://pantsbuild.github.io/jsirois/build_dictionary.html#bdict-duplicate

Bugs closed: 383, 384

Reviewed at https://rbcommons.com/s/twitter/r/727/
This commit is comprised of the following 2 dependent RBs:

1.) Add AndroidTask and AaptGen task

This adds an AndroidTask base task and an AaptGen codegen task using the aapt tool.
The AndroidTask merely obtains an AndroidDistribution for subclasses to work with.

The AaptTask processes resource folders and outputs an R.java class. This will be
compiled along with the regular .java files in the android_compile phase coming up. The
aapt tool itself packs an enormous amount of action and this class will continue to
grow as Android support grows. I could see an AaptMixin or AaptBase class in the future.

The aapt_gen class allows a command-line override of the target_sdk and build-tools versions
set by the manifest parser in the AndroidTarget class.

Currently the SyntheticTarget output by the aaptGen class is a JavaLibrary. This will likely be
changed as I create a task and target to compile .java files for Android builds next.

Testing Done:
CI.sh passes locally.

Travis is currently failing elsewhere, but I have
manually tested all of the setup_parser flags, including the new
ignore-assets flag.

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

2.) Refactor AndroidDistribution to remove SDK checks in __init__

This review is dependent on 672. I kept this
separate to make reviewing (moderately) palatable.

This is a refactor of AndroidDistribution. Instead of validating sdk_paths at instantiation, we
are now only validating SDKs when a tool is requested by a path. This makes better sense, in
that we would prefer to know about the tools available to us instead of the dirs that
traditionally contain them. It also moves action out of _init__. The AndroidTask instantiates
an AndroidDistribution but with unverified variables until the tools are needed.

I also added a command-line flag allowing users to specify a path of an Android SDK if they want.
This is an improvement over the earlier model that only cycled through common environmental aliases.

Users are likely to have just one SDK installed, with the issue being what tools are installed. This
checks the tools when the tasks that use them are invoked. If the user
has a custom SDK, they can now pass that at invocation.

This allows CI and Travis to pass (although Travis is failing on an unrelated issue currently, see below).

test_android_distribution was also refactored.

Testing Done:
CI.sh passes locally.
Travis passes  (with 672 patched in as well) [0].

[0] https://travis-ci.org/pantsbuild/pants/builds/30097096

Reviewed at https://rbcommons.com/s/twitter/r/676/
Update android target definitions

This is a follow-up based on the comments to merged CR #668.
This can be safely merged without relying on the other two
open reviews.

This gets rid of a couple of the "sensible defaults". I believe
in them as useful, but they have could proven confusing for anyone
with a non-traditional (or just maven-style) layout.

This requires all android targets to explicitly define a "manifest"
field. Android_resource targets must further define a
"resource_dir". I named it "resource_dir" instead of "resources"
to contrast with what pants expects elsewhere: the tool that
processes android resources expects a directory as input, not
a list of files. The aapt tool spiders down the dir, so the
user must specify which directory holds those resources.

Somewhere down the line, I would like to support common layouts
by default. But the way it was before this commit, it implied
that we supported things that we do not.

Testing Done:
local ci.sh passes, android targets can be processed.

Travis looks to be down. [0]

[0] https://travis-ci.org/pantsbuild/pants/builds/30210018

Reviewed at https://rbcommons.com/s/twitter/r/700/
Add support for the ragel state-machine generator.

Testing Done:
Ran the new unit tests.

Also converted wikid in birdcage to use this, and tested it.  That's on birdcage in dturner-ragel-oss-pants.

Bugs closed: https://github.com/pantsbuild/pants/issues/353

Reviewed at https://rbcommons.com/s/twitter/r/678/
expose ConfluencePublish to BUILD files; remove a lie from page.rst

http://pantsbuild.github.io/page.html#publishing says I can get my org set up with confluence-publishing via a few steps , including adding to a BUILD file...

class OurConfluence(ConfluencePublish):

That was a funny troll, but we should add ConfluencePublish to the register.py so folks really can use it from a BUILD file.

Also, tweak the page.html doc to "include" code that we know compiles OK.

Testing Done:
With this change and with other things hinted at in https://github.com/pantsbuild/pants/issues/385 and https://github.com/pantsbuild/pants/issues/387 , got things set up on my laptop so I could publish to Twitter's wiki. (thus reassuring myself that the change I _wanted_ to make doesn't break confluence publishing, yay)

Furthermore, added a test
https://travis-ci.org/pantsbuild/pants/builds/30708337

Bugs partially addressed: 385

Reviewed at https://rbcommons.com/s/twitter/r/728/
stop claiming Twitter is sole doc author. fix sphinx warnings

This change started out as fixing up a couple of (unused) Sphinx-doc config settings; If we ever exercised those settings, they woulda claimed Twitter was sole docs author. Not true nope nope nope.

While making sure that I didn't break Sphinx, I went on a warning-squishing rampage.

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

Reviewed at https://rbcommons.com/s/twitter/r/729/
Move all remaining uses of t.c.contextutil to pants.util.contextutil.
Get rid of the t.c.contextutil dep entirely.

- Cleaned up a stray use in code that got committed after my previous change.
- Also cleaned up style in that code. Will ding code-reviewer for not addressing.
- Fixed some missing deps.
Validate that junit_tests targets have non-empty sources

- Validate the sources parameter to JavaTests
- Test that nil/empty/unmatched-globs for sources are disallowed

Testing Done:
new test added for validation

Reviewed at https://rbcommons.com/s/twitter/r/619/
Followup fix for https://rbcommons.com/s/twitter/r/619/
Make the ivy utils test work. It previously didn't have a BUILD target
and so never ran.

Also add a couple of missing deps.
Also rearrange some deps alphabetically.
Followup fix for https://rbcommons.com/s/twitter/r/619/
Restore Context after mocking it for tests (fixes CI); fix dep

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

Reviewed at https://rbcommons.com/s/twitter/r/731/
Fix bad dep.

Testing Done:
CI spinning here: https://travis-ci.org/pantsbuild/pants/builds/30800681

Bugs closed: 392

Reviewed at https://rbcommons.com/s/twitter/r/742/
Move code out of goal/__init__.py into goal/goal.py.

We want all our __init__.py files to be empty, and this one actually
illustrates why: the target containing __init__.py depends on phase.py,
and has that dep explicitly in the BUILD file. However you can't load
phase.py without executing __init__.py, so there's also an implicit
dep in the other direction that you can't express in the BUILD file
without causing a circular dep.
Squashed commit of the following:

commit 3ce9ca2871770bb5fc57bd81d7ebbb51e433c80c
Author: John Ioannidis <jioannidis@twitter.com>
Date:   Tue Jul 8 01:58:42 2014 -0400

    Added cobertura coverage
Merge branch 'master' of https://github.com/pantsbuild/pants
Fixup long-missing pants_exe and goal deps exposed by a cleanup of other deps.

Testing Done:
Travis CI away here: https://travis-ci.org/pantsbuild/pants/builds/30806546
Local test kept timing out on package downloads.

Bugs closed: 393

Reviewed at https://rbcommons.com/s/twitter/r/745/
Update contributors guide for rbt fixes

Account for the closed `rbt` bug in the contributors guide.

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