Custom User Data

@esoergel @twymer
I wasn't sure if `doc_type` was a convention or a magic thing.  Essentially the use-case of this is that there are several categories of fields definitions - `UserFields`, `GroupFields`, `ProductFields`, etcetera.  We weren't planning on supporting any kind of general `CustomDataFieldsDefinition` usage.  Maybe it'd be more illustrative to have subclasses for each of these so this is just an abstract base class, but really the only difference is the category.