Change Role to GroupRole, and add UserRole

This also auto-creates a UserRole when 'user_role' is accessed, if one
doesn't already exist.

The alternative to storing both roles in the same list is to make
'group_roles' and 'user_roles' a real field and 'roles' return an
ImmutableList. It is likely that 'roles' will be read more often
than 'group_roles', so it's probably more optimal to avoid
constructing a new ImmutableList each time 'roles' would be accessed.
Merge branch 'group_roles'

* group_roles:
  Change Role to GroupRole, and add UserRole