WL-3190 Extract a private method for reordering list
WL-3190 Rename local variable and specify type

We had a Collection called candidateRoleIds when in reality all we want is
a List and the name is too verbose so it stops making sense.
WL-3190 Extract method for getting a role label
WL-3190 Tidy up logic using new methods

The code is starting to look a bit clearer

Note the change in indexing, we used to pop the first element but now we
have it at the front of the list. I should have made this change in an
earlier commit.
WL-3190 Separate logic for long labels

Move the logic for handling short labels into its own block. I'm separating
the cases in a big if / else statement currently but I might move the logic
into their own methods if it gets too hairy

It's a shame this diff hasn't come out quite right
WL-3190 Show as many as 6 roles

Heavily inspired by the terrifying work in getMultiGroupLabel this will
take the list of roles and for each sized list up to 6 there is a
corresponding message which handles the language aspect of it.

If there are more than 6 then it shows a message like

    Visible to role 1, role 2, ..., role 6 and others.
WL-3190 Use a list of role labels

Finally, instead of using the direct roleIds get some labels for them.