Tweak how machine view renders hidden/faded/highlighted services.

The specs for how hide/highlight should work in machine view:

## Show/hide

* Machine view is a literal translation of hardware so we can't be so clear cut.
* Hiding a service just de-prioritises the service.
* The hidden service is not populated in the machine column.
* The hidden services is de-prioritised in the container column. They sit at the bottom of their respective containers and stack up horizontally, the name of the service is not shown but can be found out via a tooltip which should appear from hovering over the charm icon.
* The machine and containers never get hidden with show/hide.

## Highlight/unhighlight

* Highlighting a service changes the machine column to only show machines which include the highlighted service. This allows users to use it as a filtering tool.

After thinking on this a bit more I think that this should either go in utils similar to `getRelationDataForService` or in the db (former is preferred). The reasoning is because you could have reference to the service model but not the db, or utils so you have to go get the db at which point this method might as well be on the db. But then this method calls utils methods so you also need access to utils so by pushing it there there it is clear that you'll have to go and grab access to everything to pass it in or in tests to stub out the appropriate methods,