Custom User Data

@esoergel @twymer
I generally agree.  In this feature we have two main view types - edit the custom data fields model, and edit the custom data fields on an actual data object (user, in this case).  We actually started out with using (multiple) inheritance for the latter, but then switched it to composition (see the `custom_data` property in `corehq/apps/users/views/mobile/users.py`).  I feel strongly that that's the better way of doing things there because we're hooking in to a larger process - updating the whole user, not just custom fields.

In this case, the sole purpose of the view is to allow you to edit the custom data fields model for that domain.  This requires a bit of handling - rendering a template, looking up an object, handling post data, that seems more straightforward to accomplish by inheritance, as the only difference between subclasses of the `CustomDataFieldsMixin` will be where they are (url and site map), permissions, and which `field_type` to modify.  Seems like reproducing the whole `UpdateForm` workflow in each instance would be a lot of unnecessary duplication.

Generally I'm in favor of that suggestion though, so curious to hear if you know of a good model for keeping that logic in the `CustomDataFieldsMixin` by composition.  Maybe something like this?
```python
class CustomUserFields(View):
    urlname = "user_fields_view"
    page_name = ugettext_noop("Edit User Fields")

    @method_decorator(require_can_edit_commcare_users)
    def dispatch(self, request, *args, **kwargs):
        data_fields = CustomDataFieldsModelEditor(field_type="UserFields", form_label="User Fields")
        return data_fields.dispatch(request, *args, **kwargs)
```