WIP: Hide/highlight tweaks

The specs for how hide/highlight should work in machine view and service view:

## Show/hide

### Service view
* Clicking hide will hide the service completely from the canvas.

### Machine view
* 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

### Service view
* Highlighting a service brings it to the forefront.
* Services connected to the highlighted service are displayed.
* Services not connected to the highlighted service are transparent.

### Machine view
* 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.

## Cross over – Show/Hide and Highlight

### Service view
* If a service is hidden and is connected to a highlighted service then it appears as a transparent service on the canvas.

### Machine view
* A hidden service can be highlighted, when this happens it is taken out of hidden mode.
Ditto. Also this code seems pretty similar, maybe abstract it out in a function?