CRUNCH-312: Determine the right datum reader/writer for derived Avro types
CRUNCH-313: Copy the Configuration object used by CrunchInputSplit so it doesn't conflict with settings from the base Configuration.
CRUNCH-314: Separate shuffle and bundle AvroMode configuration.

This adds an integration test, AvroModeIT, that catches the behavior
described in CRUNCH-314. The solution is to separate the
AvroMode#configure methods into configure, for sources and targets, and
configureShuffle, for SafeAvroSerialization and AvroGroupedTableType.

AvroDeepCopier and Avros also used a configure method to set the reflect
factory, which has been updated to the more specific configureFactory.

This also changes the default AvroMode to REFLECT because it is the most
general.

Signed-off-by: Josh Wills <jwills@apache.org>
CRUNCH-315: Add support for Empty PCollections/PTables.
CRUNCH-318: Add sleep to fix CheckpointIT.

Signed-off-by: Josh Wills <jwills@apache.org>