Adding permissions to UserPermissionViewModel, various other domain model tidy-ups.