WIP: data schema

Generalize validation/sanitization of dictionary data.  The basic idea is that we could define a `Schema` object describing the structure of the data (for example, the rubric dictionary sent by the JS client), then use the schema to:

* Validate that all required fields are available.
* Fill in default values for missing fields.
* Strip out unexpected fields.
* Sanitize data (str --> unicode, datetime string --> datetime object, etc.)

@stephensanchez @gradyward