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/
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/
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/