CDK-488: Add TaskUtil.partition.

This utility method regroups a PCollection using a specified number of
reducers. This can be used to control the number of files created by a
copy job. The number of reducers is approximately the number of files
produced, but at least one file per partition will be created.

This is implemented in two ways. If the dataset is partitioned, the
entities are grouped by partition key so that each partition is handled
by one process and the number of files created is minimized. If the
dataset is not partitioned, this will perform the regroup operation
using the entities themselves as keys to produce the right number of
files, one per write process.
CDK-488: Add tests for --no-compaction and --num-writers.
CDK-488: Move partition methods to private.
CDK-488: Add Job instantiation to Hadoop compat.

This also updates DynConstructors so that the constructor class is a
DynMethod and can be used as a method implementation. This was needed
because the constructor for Job has been deprecated in favor of
Job.getInstance, so one alternative needs to be a constructor and the
other a method.
CDK-488: Update to 2.3.0 to make copy test pass.

This updates to hadoop 2.3.0 so that the LocalJobRunner uses more than
one reducer and passes when we check that the correct number of files
are created. This uses the LocalJobRunner.setLocalMaxRunningReduces, and
does not run the test if it is not present so that the test is ignored
in the cdh4 and hadoop-1 profiles.
CDK-488: Add check for number of files in test without compaction.