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 check that the type is generic or specific because reflect isn't supported. Or maybe we could fail earlier and have the check in the FileSystemDataset constructor, if parquet and reflect are both enabled, fail quickly.