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.
It would. The issue is that when you load from a URI, the URI loading code needs to translate from the string representation in constraints to the appropriate type to build the actual Constraints object. @rdblue and I were talking about it, and we think the right answer is to round trip the constraint value through an Avro serialization/deserialization using the data model for the dataset. That would give the constraint value the same type as the deserialized entities will have when constraints are later checked and since Constraint creation happens only once when you load a view, the overhead of the round trip should be tolerable. I could get that added to this patch set, or we could fix it in a follow-on issue.

Thoughts?