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/