Upgrade default setuptools to 5.4.1

Testing Done:
CI passed.  Looking at https://pypi.python.org/pypi/setuptools , there appear to be no expected breaking changes between our current setuptools (5.0) and this one.  We want this upgrade because of the bugfix in 5.1, and the other bug fixes since then seem good to pull in.

Reviewed at https://rbcommons.com/s/twitter/r/674/
Patch around unicode dup detection failure.

I'm not super happy with this solution and I think it deserves a closer look, but since the thread for this fizzled out, this is the patch we've been running internally to unblock ourselves.  Thread for reference: https://groups.google.com/forum/#!searchin/pants-devel/unicode$20decode/pants-devel/tx4NHhxX1fI/VRP0fzzG4C4J

Testing Done:
CI passed

Reviewed at https://rbcommons.com/s/twitter/r/615/
Add manifest parser to AndroidTarget.

This removes the need to enter target_sdk and package variables
for every BUILD file in the package. It was always on the TODO,
but as I am prepping the codegen tasks, it seemed time. This removes
several params from the targets, docstrings are updated accordingly.

Also added BadManifestError to catch malformed or incomplete manifests.
These errors would eventually cause problems in the compilation
process, but since we are parsing the manifest here, uncaught
exceptions would appear to be pants-related problems, as opposed
to an issue with the user's Android project. So I added an exception
to catch the issue.

Testing Done:
ci.sh passed locally.
Travis passed [0].

There will be some further integration tests of this functionality when I push up a
separate patch this weekend comprised of the aapt_gen class and its test coverage.

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

Reviewed at: https://rbcommons.com/s/twitter/r/668/
Fix relativity of antlr sources

This fixes an issue where CacheValidator's source hashing was failing on
the synthetic targets generated by AntlrGen, since the assumed source
paths mismatched the actual generated paths.

- Adds an integration test for antlr4 codegen
- Uses sources_relative_to_source_root for the assumed output sources,
  and fixes the synthetic source root for the antlr output. We can't
  control antlr's output relative paths very tightly, so we can't use
  the output directory directly as a sourceroot.
Lock globs into rootdir and below

This avoids the situation where a user adds a sources=globs('../*.scala'), causing it to be silently ignored but causes issues later.

Reviewed here: https://rbcommons.com/s/twitter/r/686/
Closes: https://github.com/pantsbuild/pants/issues/348
Pluralize product_type of Task to product_types
Resurrected pants goal idea.

This mostly involved updating outdated references, and making utility functions to mimick functionality refactored long ago.

Source and Javadoc jars are not mapped in, and I'm not quite sure how to get that working again. I'd appreciate any input on that matter.

The code in idea_gen and ide_gen isn't very clean, because it wasn't very clean in the first place. It would be good to go back at some point and tidy it up.

Idea gen is also much more efficient than it used to be, thanks to the round manager: it now avoids compiling or jarring anything, which saves tons of time. It would still be nice to include a flag to optionally disable codegen, but I'm not sure how (un)trivial that is at this juncture.