Non-chunk-specific logic in jvm compilation now in prepare_execute.

- Fixes the global analysis splitting bug.
- Classpaths are now modified once, up front.

(Previously the classes/resources dirs were added to the classpath
multiple times, once per chunk. Also, there was some bogus logic
that updated the classpath at the end of execute(), implying that
the update was only for downstream tasks. However the update would
be visible in the next chunk, so that was misleading, and also
led to the first chunk being 'special'.)
A scala library with java sources should not trigger the warning 'Missing BUILD dependency' message
In order to avoid incorrect warnings include the java sources in the check
Also added a small project that should not trigger the warning anymore.

Reviewed at https://rbcommons.com/s/twitter/r/435/
Beginning of AndroidDistribution class

Lots of cloned methods from java/Distribution.py. There is just
enough overlap that a refactor is probably useful. Pull distribution
out of Java and then subclass it for Android and JDK/JRE.

This is just a placeholder commit, nothing is ready or working yet.
Revert "Beginning of AndroidDistribution class"

This reverts commit 9c3aaf4f279df1b7e97421b138a95552922c9325.
Fix the py command and add py in the ci script

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

Local testing

tw-172-25-20-142 pants]$ PANTS_DEV=1 ./pants py --pex src/python/pants:pants
*** Running pants in dev mode from /Users/tdesai/projects/pants/src/python/pants/bin/pants_exe.py ***
Loading pants backends from source
/Users/tdesai/projects/pants src/python/pants:pants
WARNING: Target has multiple python_binary targets!
Wrote /Users/tdesai/projects/pants/dist/src.python.pants.pants.pex

Bugs closed: 179

Reviewed at https://rbcommons.com/s/twitter/r/444/
Fix duplicate detection when target has no sources.

See https://github.com/pantsbuild/pants/issues/176.
fix Python py verbose mode

Testing Done:
https://travis-ci.org/pantsbuild/pants/builds/26632712
[tdesai]PANTS_DEV=1 ./pants py --pex -v src/python/pants/bin:pants
Cleaning up...
Loading pants backends from source
Detected interpreter /usr/bin/python: CPython-2.6.7
Detected interpreter /System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7: CPython-2.7.2
Detected interpreter /usr/local/bin/python2.7: CPython-2.7.5
/Users/tdesai/projects/pants src/python/pants/bin:pants
Build operating on targets: PythonBinary(BuildFileAddress(src/python/pants/bin/BUILD, pants))

Reviewed at https://rbcommons.com/s/twitter/r/445/
Beginning of AndroidDistribution class

Lots of cloned methods from java/Distribution.py. There is just
enough overlap that a refactor is probably useful. Pull distribution
out of Java and then subclass it for Android and JDK/JRE.

This is just a placeholder commit, nothing is ready or working yet.
Add __init__.py to pants/android package
Fix caching of SDK

I was replacing the dictionary object.
Add a hook to allow pants customizations to inject backends.

This may be provisional until the backend reorg finalizes, but
for now it assumes the additional backend packages injected
have been arranged to be on the PYTHONPATH by other means.

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

Bugs closed: 447

Reviewed at https://rbcommons.com/s/twitter/r/447/
Add explicit support for PANTS_DEV mode in wrappers.

This change respects 2 new environment variables for
requirements (WRAPPER_REQUIREMENTS) and sources
(WRAPPER_SRCPATH) that allow for running the pants
bootstrap script in a devlopment mode and using extension
sources in other trees.

Testing Done:
Using this from a wrapper script in our internal pants repo with extension code, but also locally some dummy tests:

$ cat /tmp/requirements.txt
beretta==0.2.5

$ WRAPPER_REQUIREMENTS=/tmp/requirements.txt WRAPPER_SRCPATH=/tmp/notreally PANTS_DEV=1 ./pants
*** Running pants in dev mode from /home/jsirois/dev/3rdparty/jsirois-pantsbuild-pants/src/python/pants/bin/pants_exe.py ***
***   with extra requirements: /tmp/requirements.txt ***
***   with extra sources /tmp/notreally ***
Bootstrapping pants_deps with requirements:
  /tmp/requirements.txt
  /home/jsirois/dev/3rdparty/jsirois-pantsbuild-pants/3rdparty/python/dev_only_requirements.txt
  /home/jsirois/dev/3rdparty/jsirois-pantsbuild-pants/3rdparty/python/requirements.txt
  /home/jsirois/dev/3rdparty/jsirois-pantsbuild-pants/3rdparty/python/twitter/commons/requirements.txt
Using /usr/bin/python2.7
New python executable in /home/jsirois/dev/3rdparty/jsirois-pantsbuild-pants/build-support/pants_dev_deps.venv/bin/python2.7
Also creating executable in /home/jsirois/dev/3rdparty/jsirois-pantsbuild-pants/build-support/pants_dev_deps.venv/bin/python
Installing setuptools, pip...done.
Downloading/unpacking beretta==0.2.5 (from -r /tmp/requirements.txt (line 1))
  Downloading beretta-0.2.5.tar.gz
  Running setup.py (path:/home/jsirois/dev/3rdparty/jsirois-pantsbuild-pants/build-support/pants_dev_deps.venv/build/beretta/setup.py) egg_info for package beretta

Downloading/unpacking termformat>=0.1.5 (from beretta==0.2.5->-r /tmp/requirements.txt (line 1))
  Downloading termformat-0.1.5.tar.gz (40kB): 40kB downloaded
  Running setup.py (path:/home/jsirois/dev/3rdparty/jsirois-pantsbuild-pants/build-support/pants_dev_deps.venv/build/termformat/setup.py) egg_info for package termformat

Installing collected packages: beretta, termformat
...

Bugs closed: 178

Reviewed at https://rbcommons.com/s/twitter/r/443/
Use standard method dispatch to call baseclass methods.

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

Bugs closed: 183

Reviewed at https://rbcommons.com/s/twitter/r/448/
sample: java hello world. use resource. change bundled-file example.

We want to demonstrate resources. We want to demonstrate file-bundles. The 'hello world' example was using a bundled file for something you'd more-properly use a resource for. So don't do that.

Instead, load two "greetees". Load one from a bundled file, one from resource.

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

$ ./pants goal bundle src/java/com/pants/examples/hello/main
$ cd dist/main-bundle/
$ java -jar main-bin.jar

$ ./pants goal run src/scala/com/pants/example/hello/exe

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

Reviewed at https://rbcommons.com/s/twitter/r/350/
Update imports post-refactor
docs: internals += def'n for "backend", links to couple of mail threads

We keep saying "backend" on the pants-devel mailing list. Maybe we should define it somewhere.

Reviewed at https://rbcommons.com/s/twitter/r/449/
Update some target definitions- add android_binary target skeleton
Merge branch 'master' of https://github.com/pantsbuild/pants into android
Update the inheritance model for AndroidDistribution- make tools non-protected

There are still problems with this approach. More testing of the logic
is needed.
Instantiate AndroidDistribution in AndroidTask, give tasks access to tools

This hands the address of the aapt to to the aaptGen task as well. Still
very much in progress.