LazySourceMapper and tests

A LazySourceMapper attempts to find targets which own sources without
loading any more than is needed and caches its results.

This is intended for use in tasks like what-changed or (in the future)
goals which discover target to act on (eg 'compile-changed') or other
uses cases which want to map a source file to a target as cheaply as possible.

Integration into what-changed will be a follow-up if/when this lands.

Testing Done:
./pants goal test tests/python/pants_test/base:lazy_source_mapper
https://travis-ci.org/pantsbuild/pants/builds/44622933

Bugs closed: 882

Reviewed at https://rbcommons.com/s/twitter/r/1526/
allow adding to pythonpath via pant.ini

Looks like this used to work, based on a comment (recently removed) that said:
```
"""
  To add additional paths to sys.path, add a block to the config similar to the following:
  roots: ['src/python/pants_internal/test/',]
"""
```
The provides an alternative to `PYTOHNPATH=custom/pants/stuff ./pants goal ...` when using
an in-repo custom register.py.

Note that this is unrelated to plugins distributed as dists and installed in the (virtual)env
from which pants is run / loaded with pkg_resources, or source backends packaged into a custom
dist or pex of pants.

This change restores that functionality, though it is now called `python-path` for clarity and
lives in the `[backends]` config section.

Bugs closed: 856

Reviewed at https://rbcommons.com/s/twitter/r/1457/
Enable caching in the Travis CI build.

The specs here:
  http://docs.travis-ci.com/user/caching

This turns on caching for ~/.pants.d, ~/.ivy2
and the current pants requirements bootstraped in
build-support.  To make virtualenv caching work, updates
the virtualenv bootstrap script to use a stable directory name
across virtualenv versions.

Testing Done:
CI went green here: https://travis-ci.org/pantsbuild/pants/builds/44760074

Bugs closed: 887

Reviewed at https://rbcommons.com/s/twitter/r/1537/
Improve CI caching.

Add an option to skip pants bootstrap pre-clean
allowing cached build-support/pants_dev_deps.venv
to survive and be utilized.

I missed this cleaning going on in ci.sh when 1st enabling caching in https://rbcommons.com/s/twitter/r/1537/
This change actually uses the build-support/pants_dev_deps.venv now to avoid pip installing pants deps unless they change as evidenced by logs.

Testing Done:
CI went green here: https://travis-ci.org/pantsbuild/pants/builds/44795443

Bugs closed: 888

Reviewed at https://rbcommons.com/s/twitter/r/1538/
Make zinc relative its -classpath argument too.  (Again, because mesos
creates long-ass paths).

Testing Done:
Ran new tests.  Also https://travis-ci.org/pantsbuild/pants/builds/44629688

Reviewed at https://rbcommons.com/s/twitter/r/1528/
doc: you don't need Ultimate Edition IJ for the python plugin

This came up at Twitter build stand-up ~a week ago

Bugs closed: 848

Reviewed at https://rbcommons.com/s/twitter/r/1490/
Refactor WhatChanged into base class, use LazySoruceMapper

Switch to using LazySourceMapper to map changed files to targets.
LazySourceMapper is designed to map sources to targets without
loading any more of the BUILD graph than is required, which is
ideal for a what-changed use-case.

Refactoring the what-changed calculation into base class should make
it easier to support other tasks that require the set of changed
targets (or files). The WhatChanged task itself is now just a small
stub on top of it.

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

./pants goal test tests/python/pants_test/tasks:what_changed

Bugs closed: 884

Reviewed at https://rbcommons.com/s/twitter/r/1534/
slide tweaks based on class feedback.

test probably lives in tests. newline. TDesai points out: 'foo' is not a great example. A slide for showing addresses in a BUILD file.

Testing Done:
viewed slides on laptop in not-so-many-pixels mode. slides fit onscreen, yay

Reviewed at https://rbcommons.com/s/twitter/r/1532/
Remove unused imports from what-changed.

Testing Done:
/pants test tests/python/pants_test/tasks:what_changed

https://travis-ci.org/pantsbuild/pants/builds/45154573

Bugs closed: 890

Reviewed at https://rbcommons.com/s/twitter/r/1542/
builddict: add a flag to omit "internal" things

An option for goal builddict, the goal which generates http://pantsbuild.github.io/goals_reference.html . This option is a list of regexps; goals whose implementations (e.g., 'pants.backend.jvm.tasks.benchmark_run.BenchmarkRun') match any of these regexps get omitted from the goals_reference.

Why? To prevent 'sitegen' from showing up on http://pantsbuild.github.io/goals_reference.html . The 'sitegen' goal is defined in internal_backend, which we don't ship with Pants.

Bugs closed: 777

Reviewed at https://rbcommons.com/s/twitter/r/1546/
Replace exclusives_groups with a compile_classpath product

As discussed [on the mailing list](https://groups.google.com/d/topic/pants-devel/3cBrJ_rZfCI/discussion).

- Replace all usage of exclusives and ExclusivesMapping with an OrderedSet containing the compile_classpath
- Don't reverse resources targets while appending them to the classpath in prepare_resources.py

Testing Done:
PANTS_DEV=1 ./pants test tests/python::

Reviewed at https://rbcommons.com/s/twitter/r/1539/
doc: publish page shows provides= example

We have some lovely sample code for provides=; but folks overlook it. So point folks
at it, sheesh.

setup_repo.md: replace copy-paste sample code with an include, lest it drift out of date without us noticing

Testing Done:
see it rendered at
http://pantsbuild.github.io/lahosken-demo/publish.html
http://pantsbuild.github.io/lahosken-demo/setup_repo.html#setup_publish

Bugs closed: 473

Reviewed at https://rbcommons.com/s/twitter/r/1549/
start of a Pants-with-scala page

+ points out sample code

+ java_sources, circular java-scala deps

+ mentions 'goal repl'

Testing Done:
rendered at http://pantsbuild.github.io/lahosken-demo/scala.html

Bugs closed: 26

Reviewed at https://rbcommons.com/s/twitter/r/1092/
docs: many style tweaks

tweak Table-of-Contents styles a bunch. tweak other styles, too.

Reviewed at https://rbcommons.com/s/twitter/r/1544/
fix 2 broken links

* bad copy-paste: our main page links *BUILD files* page with another page's title (*Conceptual Overview*). so use correct title
* python_requirement_library should link to python_requirement, but link is misplaced and broken. so fix and fix

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