.rst files -> .md files.

re-play https://rbcommons.com/s/twitter/r/1235/ , "convert more .rst files to .md", but less crash-y. Also pull in some excellent feedback and update with doc changes that went into the .rst.

The crashy change converted many rst docs to Pants-enhanced markdown (yay) with BUILD targets (yay) with circular deps which 'goal markdown' is OK with (hmm) but which 'goal test' balks at, breaking CI (d'oh). So I reverted that change.

*This* change is like *that* change, but

* Uses the new `links` BUILD param instead of `dependencies`. Yay for no CI breaks.
* Pulls in an additition the excellent AReitz made to JVMProjects.rst meanwhile.
* Includes feedback from same excellent AReitz.
* pulls in .rst changes that came in at https://rbcommons.com/s/twitter/r/1279/

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

http://pantsbuild.github.io/sitegen-test/

Reviewed at https://rbcommons.com/s/twitter/r/1263/
Split up the travis run into a unit-test shard and multiple IT shards.

Also move tests/python/pants_test/tasks/jvm_compile/java:test_java_compile_integration
out of the unit test suite.

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

Bugs closed: 773

Reviewed at https://rbcommons.com/s/twitter/r/1290/
what_changed: the build graph is sorted twice even though the first iteration does not require the targets to be sorted. Removing that sort reduces the call time by about a third in a non scientific test.

Testing Done:
ci.sh passes locally

Reviewed at https://rbcommons.com/s/twitter/r/1291/
Switch all remaining accesses of 'context.options' to new options.

Killed IvyUtils's dependency on options. It only needed it for
two options that no one is using in practice and this made things
much much simpler.

Also made some methods in IvyUtil classmethods, so that call sites
don't need to instantiate it and pass it config.

Testing Done:
All task unittests passed.

CI passed.

Reviewed at https://rbcommons.com/s/twitter/r/1289/
inject Config most places it is used so that pants.ini isn't reparsed repeatedly

Parsing the ini file isn't terribly expensive. However, it is parsed at least once for certain types of targets. When there are many BUILD files involved in completing a goal, parsing the ini file may be a significate portion of pants execution time. This change reduces the number of times pants.ini is parsed by injecting a Config object as an argument to most of the scopes where it would otherwise be reparsed. It also exposes it as a property of ParseContext so that objects registered by wrappers can also avoid having to reparse.

This makes it possible to improve the behavior found in this issue https://github.com/pantsbuild/pants/issues/565