Fix patching of javadoc in makefile.

* Added guard to prevent trying to patch javadoc when javadoc bug is not
  present.  Prevents makefile errors when using javadoc versions without
  the bug.
* Updated copyright year.
Moved Java compiler options to variable.

* Moved the Java compiler (javac) options to a variable in the makefile
  (rather than hard-coded) so they can be easily changed, even without
  editing the makefile.
* Added Java target version makefile variable (also easily settable on
  the make command line).
* Revised Java compilation targets to remove directory change and
  replace hard-coded options with options variable.
* Added ArrayIterator as a prerequisite for IterableArray.  Had been
  erroneously missing.
Added ability to properly compile for different Java versions.

* Added lookup of the Java runtime JAR for the requested version.
* Added runtime JAR to compilation command through -bootclasspath
  option.  This allows proper compilation for different Java versions
  and removes the compilation warnings about the boot classpath not
  being set.
Only cross-compile when necessary.

* Added comparison of target Java version and Java compiler version to
  detect cross-compilation.
* Added guard to only look up location of Java runtime JAR and set
  bootclasspath option when actually cross-compiling.
* Updated Java compilation commands with appropriate cross-compilation
  options that only exist when needed.
Added proper checking for test dependencies.

* Added checking for existence of JUnit 4 and Hamcrest JARs and required
  classes, but only when doing testing.  This improves over previous
  checking that was more approximate and unconditional.  This is
  accomplished by creating files that indicate if the required
  prerequisites exist and having the test compilation depend on those
  files.
* Added test-specific classpath accordingly and inserted it where
  necessary.
* Updated 'listconfig' with new classpaths and JARs.
* Moved variables for string substitution and project version.
* Updated two comments.
Added help command to makefile.

* Added 'help' target which prints documentation from the makefile,
  including, now, documentation of the 'help' target.
* Moved list of phony targets under the documentation because they are
  parallel.
* Added 'help' to list of phony targets.
Revised Java runtime JAR lookup.

* Improved error message for failed runtime JAR lookup including
  suggesting to set 'javaVersion' and saying what was searched.
* Simplified runtime JAR checking and cross-compilation setup logic.
* Canonicalized indents by only using variable.
Fixed dependencies for UserScenarios.
Added check for JUnit version in makefile.

* Added development requirements documentation to README.
Added self-test to makefile.

* Added 'selftest' target to makefile which builds each target and
  command from scratch to make sure it runs.  Reports results in a basic
  way similar to 'go test'.
* Added variable for makefile name.
Forced makefile to use bash as shell.

* Some GNU make setups (Ubuntu 14.04) default to /bin/sh as the
  shell used to interpret makefile commands. This breaks our
  makefile due to tests of the form [[ ... ]] that are only
  included in bash, but not sh.
Fixed check for JUnit version in makefile.

* Added conversion of space-separate junitJars to proper classpath
  for running junit.version.Runner.
* Made version number parsing more robust to allow parsing of JUnit
  version numbers of the forms: 4.11, 3.8.2, 4.11-beta-1.
Reworked fixes from previous two commits.

* Updated make shell to be bash (instead of sh) so that conditional
  tests work when sh is not just bash.
* Fixed parsing and checking of JUnit version.
Added better handling for dashes in junitVersion.

* Changed junit version tokenizing from '.' to '.-' to more safely
  handle junit versions with dashes.
Fixed JUnit version check for future versions.
Fixed Hamcrest version in development requirements documentation.

* The previous Hamcrest version requirement was an educated guess.
  However, I did some testing and discovered that version 1.1 does not
  have CoreMatchers.containsString and that while version 1.2 does have
  CoreMatchers.containsString it is at a different path.  So Hamcrest
  1.3 is the minimum version.