Initial commit for interfaces
Add DataField.interface field
Rename _orderby_field => _order_field
Implement remaining iterator option for methods
Force distinct to be true for `size()`
Add `DataField.init` class method

This is a convenience method for creating and validating
a new `DataField` instance. It is preferred over doing
`DataField(...)` since it validates the field and exists prior
to saving.

A dot-delimited string can be used such as `DataField.init('app.model.field')` in addition to specifying
each argument separately.

This returns an unsaved instance for further modification.
Remove `published` argument in init subcommand

The default for published is already `False`.
Improve and extend FieldInterface

- Remove field choices methods
- Change most methods to be public
- Remove coercion to tuple data type
Implement iterator protocol, abstract out RowFormatter

Exporters now take the iterable in __init__ which enables
iterator over formatted rows prior (instead of writing the
data to a file object).
Update R exporter for new API and break out data/script methods

Add reference to concepts directly on Exporter instance
Add placeholder profiles package
Move interfaces under data package
Add data FieldCache

This is a placeholder for adding data caching at a field-level.
Begin deprecation of DataField.enumerable

- Add Interface.enumerable property
- Rename ENUMERABLE_MAXIMUM => ENUMERABLE_MAX_SIZE
- Rename CacheProxy.flush => clear