CDK-189: Adding initial CSV support.

This uses OpenCSV to parse the records into String[], then uses the avro
Schema to map the strings to the correct field types. If a field is
missing or doesn't parse to correctly (e.g., causes a
NumberFormatException) and the field is not nullable, then the schema's
default value is used. If the default value is missing, then an error is
thrown. The mapping does not currently support fixed, bytes, map, array,
or record types as field schemas.

If the record's class isn't found by Class.forName, the records returned
are GenericData.Record objects. If it is found, then it is instantiated
using ReflectData. Specific and Generic records are fully-supported, but
POJOs are supported only if they implement bean-style setter methods,
like setField. This is consistent with entity handling elsewhere, but
not as flexible as avro reflect.