CDK-496: Added the type parameter to the Datasets API

I also went through and extended the use of the type parameter down to at least Avro files
and CSV files. In order to support Parquet and HBase, I think more work needs to be done
on the underlying stores. But if I missed something, I can get those in before the merge.
This should determine the correct avro model and use [`createDatumReader(Schema)`](http://avro.apache.org/docs/1.7.6/api/java/org/apache/avro/generic/GenericData.html#createDatumReader(org.apache.avro.Schema))