Custom User Data

@esoergel @twymer
@dannyroberts says:
In corehq/apps/custom_data_fields/models.py:

> +from jsonobject import JsonObject
> +
> +
> +CUSTOM_DATA_FIELD_PREFIX = "data-field"
> +
> +class CustomDataField(JsonObject):
> +    slug = StringProperty()
> +    is_required = BooleanProperty()
> +    label = StringProperty()
> +
> +    @property
> +    def html_slug(self):
> +        return "{}{}".format(CUSTOM_DATA_FIELD_PREFIX, self.slug)
> +
> +
> +class CustomDataFieldsDefinition(Document):

I think the second option is pretty reasonable; really what matters is whether or not it's in the same db as cases and forms. If it is, any views for it are going to have to process every single case and form as well. If there aren't any views for the new type of doc, then it may just actually not matter, since there are probably 10000 form and case docs to every doc of this new type, so it's not like the new docs are going to be the thing making it slower to reindex.

My favorite solution (moving forms and cases entirely to postgres aside) is to just split out forms and cases into their own database and leave everything else in the original. We've definitely visited that before and concluded that it'd involve rewriting a few things in addition to just the huge migration; so the above proposal is a reasonable compromise.