Use JvmFingerprintStrategy in cache manager

JvmFingerprintStrategy was not used for the cache manager, causing the valid analysis file to be emptied the second time a compile was executed.

Testing Done:
Added a basic java compile integration test. Calls pants compile on a java test project twice, checking that the analysis file is valid each time.

Reviewed at https://rbcommons.com/s/twitter/r/835/
Update front-facing help and error messages for Android targets/tasks

Small improvements to an exception message and a CLI flag.
The missing manifest error in android_target didn't give
any hints as to where the bad BUILD file entry was pointing.

And the sdk-path CLI flag for android_task wasn't clear about what it did.
It could easily have been interpreted as forcing a platform
version (i.e. SDK platform 17) as opposed to what it
actually is meant to do, which is point to an entire
Android SDK installation somewhere on the filesystem.

The use case is to force a custom SDK over the AOSP one on
the machines path. Lots of OEM customize the framework and
might have multiple SDKs on the fs.

Testing Done:
CI passes.

Travis passes [0].

[0] https://travis-ci.org/pantsbuild/pants/builds/31784570

Reviewed at https://rbcommons.com/s/twitter/r/837/
Rename pants.goal.goal.Goal to pants.goal.task_registrar.TaskRegistrar.

Rename pants.command.goal.Goal to pants.command.goal_runner.GoalRunner.

There is now no class called Goal, no file called goal.py and no target called :goal anywhere.
Add assert_list to ensure an argument is a list

Testing Done:
Ran unit tests locally

Reviewed at https://rbcommons.com/s/twitter/r/811/
Updates error message when referencing the wrong path to a BUILD file.

Before, it would just spit out the incorrect BUILD file path.:

  Exception message: BUILD file does not exist at: /Users/zundel/Src/Pants/src/java/com/pants/examples/annotation/exampleTYPO

Now it will read as follows:

  Exception message: BUILD file does not exist at: /Users/zundel/Src/Pants/src/java/com/pants/examples/annotation/exampleTYPO
    referenced from src/java/com/pants/examples/annotation/processor:processor
    referenced from src/java/com/pants/examples/annotation/main:main

Testing Done:
Updated unit tests, ci passed at https://travis-ci.org/pantsbuild/pants/jobs/31812266

Bugs closed: 442

Reviewed at https://rbcommons.com/s/twitter/r/841/
The public API for the new options system.
Merge branch 'master' into new_flags2

Conflicts:
	src/python/pants/backend/core/register.py
	src/python/pants/commands/goal_runner.py
	src/python/pants/option/options.py
	tests/python/pants_test/option/test_options.py
	tests/python/pants_test/tasks/BUILD
	tests/python/pants_test/tasks/test_base.py
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.
Merge branch 'master' into new_flags2