The public API for the new options system.
Updated the basename and name of some targets to that pants goal bundle src/java:: doesn't create colliding bundles in dist/

Testing Done:
ci running @ https://travis-ci.org/pantsbuild/pants/builds/31947112

Bugs closed: 453

Reviewed at https://rbcommons.com/s/twitter/r/847/
Remove all existing cases of custom args for Task class ctors.

Tasks are instantiated in a managed way, in the execution engine.
So they must all have a set of known ctor args (currently context and workdir).

In some cases we allowed extra args, used only by tests. This change removes
those extra args and requires all Task classes to receive any extra information
via the context, even at test time.

This is for a couple of reasons:

1) Since the task cannot have extra args when run in the execution engine,
it's more realistic not to allow tests to do so.

2) We want to be able to change the Task base class's ctor args in the
future without having to modify dozens of subclasses. To do so, we'd
like to change all Task ctors to *args, **kwargs style. This change
is the first step towards that.

Note that we even disallow intermediate classes from having extra ctor args,
even if in theory that would be OK as long as all instantiable subclasses provide
those arguments. However it's simpler and more uniform, especially in the
*args, **kwargs style, not to allow this.
Conflicts:
	src/python/pants/backend/core/tasks/console_task.py
	src/python/pants/backend/core/tasks/filter.py
	src/python/pants/backend/core/tasks/listtargets.py
	src/python/pants/backend/core/tasks/what_changed.py
	src/python/pants/backend/jvm/tasks/dependencies.py
	src/python/pants/backend/jvm/tasks/ivy_resolve.py
	src/python/pants/backend/jvm/tasks/jar_publish.py
	src/python/pants/backend/jvm/tasks/jar_task.py
	src/python/pants/backend/jvm/tasks/jvm_compile/java/java_compile.py
	src/python/pants/backend/jvm/tasks/jvm_compile/jvm_compile.py
	src/python/pants/backend/jvm/tasks/jvm_compile/scala/scala_compile.py
	src/python/pants/backend/jvm/tasks/nailgun_task.py
	tests/python/pants_test/tasks/test_console_task.py
Dummy commit to provide message intended for previous commit.

Message for 1d68bf9d0c326883962ae8e0f05394c03682da54 should have been:

Change all Task subclass constructor args to (*args, **kwargs).

Unfortunately the message got messed up in a merge, and I only
discovered this after pushing, and didn't want to force-push a fix,
as that leads to trouble.
docs: Remove targets of the form dir/BUILD:target which cause errors

ValueError: Spec tests/java/com/pants/examples/hello/greet/BUILD:greet
has BUILD as the last path part and BUILD is reserved files

Reviewed at https://rbcommons.com/s/twitter/r/853/
Migrate some reasonable default values from pants.ini into 'defaults' in the pants source.  This covers scala-compile, jvm-compile, protobuf-gen, and a few others.

Testing Done:
CI is baking at: https://travis-ci.org/pantsbuild/pants/builds/32014416

Bugs closed: 455, 456, 458

Reviewed at https://rbcommons.com/s/twitter/r/852/
Miscellaneous fixes to protobuf codegen.

Sorted protobuf paths and resources, and handled collisions deterministically. This process generates
copious warning/error log output where appropriate, as protobuf collisions are something the user should
definitely be aware of.

The imports property of java_protobuf_library was changed slightly to not cache its list of jars if it doesn't
manage to resolve one of its targets. This solves a problem where it incorrectly saves an empty list if it's
poked before the build graph loads.

Modified the log outputs of ivy imports to be more accurate/helpful.

Reduced occurance of extraneous/incorrect 'unconsumed gen targets' warning (it still happens, not as much).

Testing Done:
Tests under pants_test/tasks:: behave the identically to their counterparts on master.

Tested successfully on many square internal projects.

Bugs closed: 376

Reviewed at https://rbcommons.com/s/twitter/r/720/
Got ivy to map in javadoc and source jars for pants goal idea.

This involved a fair amount of finagling with conf variables spread across ivy_* and ide files,
and some changes to the ivy mustache. The mechanism by which confs are currently passed around
does not seem very robust. The whole system would probably benefit from some refactoring to
abstract away ivy's inner workings and streamline generic mapping settings; it would be nice to
have an abstract interface for mapping jar files. This could  also make it easier to deal with
failing downloads, parallelization, or using a different jar mapping tool, but all that can
wait for an entirely different review.

Also cleaned up some style issues that got missed in the last patch for the idea goal.

Don't do extra work if no one wants sources.