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/
Add changes-in-diffspec option to what-changed

Instead of looking at changes in the workspace relative to some parent ref/treeish, this
allows finding targets changed by some diffspec that is meaningful to the scm, eg a commit
SHA, a commit range, or other ref/ref-range.