CDK-496: Added the type parameter to the Datasets and DatasetRepository APIs

 * When creating new Datasets or Views, types are also resolved with respect
to the Schema. This preserves the ability to use the reflect data model by
passing a type of Object.class.

 * The patch also fixes CDK-517 by using Avro serialization to convert
constraints specified in the View URI into the type expected by the data
model in use.

 * The type parameters is also maintained in the MR APIs so the right
data model can be used in MR and Crunch jobs.

 * A number of util methods were added to a new DataModelUtil class to make
it easier to deal with data models.

 * The patch also has the benefit of enabling projection over a Dataset by
loading the Dataset with a type that contains a subset of the fields of the
Dataset schema. There are some minimal tests for this, but more comprehensive
testing should be done before documenting this as a feature.
Merge pull request #122 from joey/cdk-496

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