Ui component changes

This PR
* reinstates `UIComponent.show` as a non-focusing alternative to `UIComponent.activate` (useful for the HUD).
* uses classes and rules in the stylesheet to show/hide components.
  - this allows code to add custom styles for hidden, visible and 'reactivated' elements without getting involved with `UIComponent`'s inner workings.

@smblott-github I just went to try and move the HUD to an iframe as a `UIComponent`, but it seems you killed `UIComponent.show` in 0524bdc3f76279e8930bfe4b1b42d93e0e9bf6e4. This fixes that :)