Moving to more composition

I've been displeased with the way serialization & data preparation have been working. This splits them off into their own classes & makes them a bit pluggable. If I merge it, it'll be a major version bump (v2.0.0, though not much work to port), since ``fields`` is no longer special.

Thoughts? @jphalip @binarydud