'return a dictionary with the fields classified by category::
{   \'default\': [(\'default_foo\', \'model\', \'foo\'), ...],
\'group\':   [(\'group_bar\', [browse_group], browse_implied_group), ...],
\'module\':  [(\'module_baz\', browse_module), ...],
\'other\':   [\'other_field\', ...],'

@api.model
def _get_classified_fields(self):

    IrModule = self.env['ir.module.module']
    ref = self.env.ref
    (defaults, groups, modules, others) = ([], [], [], [])
    for (name, field) in self._fields.iteritems():
        if (name.startswith('default_') and hasattr(field, 'default_model')):
            defaults.append((name, field.default_model, name[8:]))
        elif (name.startswith('group_') and (field.type in ('boolean', 'selection')) and hasattr(field, 'implied_group')):
            field_group_xmlids = getattr(field, 'group', 'base.group_user').split(',')
            field_groups = reduce(add, map(ref, field_group_xmlids))
            groups.append((name, field_groups, ref(field.implied_group)))
        elif (name.startswith('module_') and (field.type in ('boolean', 'selection'))):
            module = IrModule.sudo().search([('name', '=', name[7:])], limit=1)
            modules.append((name, module))
        else:
            others.append(name)
    return {'default': defaults, 'group': groups, 'module': modules, 'other': others}
