A DataType represents a data type in the datastore.
Each DataType subtype defines four methods:
format: returns a formatted string for a datastore value
input_field: returns a string HTML <input> element for this DataType
name: the friendly string name of this DataType
parse: parses the formatted string representation of this DataType
We use DataType instances to display formatted values in our result lists,
and we uses input_field/format/parse to generate forms and parse the results
from those forms to allow editing of entities.