WL-3190 Don't add or remove inherited roles

This will result in an inconsistent exception so just don't try it!
WL-3190 Remove logic from the view

Remarkably the view determines how it's going to generate the access label.

This should be handled by the controller but since they are so tightly
coupled already I will send the message from the view to the model directly.
WL-3190 Rename effectiveAccessLabel

Is now getShortAccessLabel
WL-3190 Method for group access labels

Also making group names string method private, since it is only used here
WL-3190 Let's not forget about dropbox!
WL-3190 Quick tidy up
WL-3190 Stop using getEffectiveGroupsLabel
WL-3190 Method for long / short labels

The logic for determining how to display a short or long label is separated
using a private method.
WL-3190 Rename existing getLongAccessLabel

This is probably a bad move because I am creating another public method
with the exact same type signuture. That said it is used once in the UI.

The benefit is that we now have a much more descriptive method name and
I've thrown in some documentation because I'm nice like that.
WL-3190 Get long access labels

As a complement to #getShortAccessLabel, introduce a method to expose the
long version of an access label.

This will be used in the 'more' context, when someone views a resource's
properties when they do not have rights to edit them.
WL-3190 Consistent code style

In the rest of the file, braces start and end on their own lines.
WL-3190 More verbose docs for getShortAccess

The getShortAccessLabel method might not give you back all the groups on
an object because the message needs to be displayed in a small area such
as the resources list table. Document this fact.
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.
Merge pull request #22 from ox-it/WL-3190

WL-3190 Content tool respects new kernel inheritance rules