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.
Also, if we were to add a default, it should be `GenericData.Record` for `Datasets` because we know we can always load it. But I think this should only be the case if we want to add `<V extends View<GenericData.Record>> V load(URI)` and similar methods, we shouldn't allow passing null to default.