Control access cleanup

This continues the work of #4731 cleaning up direct access to controls and replacing it with messages.

There's a couple of things to review:
1. The nasty one is d743f93 which adds a method to specify spinner labels via a single message.  Nasty due to the void* usage, though this is used elsewhere as well.  Ideas welcome.
2. <del>There's a reasonably trivial change in the PVR guide stuff which I think can be clarified.  @xhaggi, @opdenkamp, @Jalle19 please take a look at 0612a4a specifically, though a lot of this applies to the PVR dialog classes.</del>
3. I've introduced GUI_MSG_SET_FILENAME which is essentially identical to GUI_MSG_LABEL_SET.  The only rationale I have is that by using a specific message we don't get the case of the message being sent to the wrong control type.  I could reuse GUI_MSG_LABEL_SET for this though.
4. The use of GUI_MSG_ITEM_SELECT for progress means that you can only set integers rather than floats.  This may be a regression in behaviour, so perhaps an alternate is to attach a variant or some such to the GUIMessage Param?

Assuming 1 is acceped (or a better solution is suggested) I'll go through and redo other spots filling a spinner via the GUI_MSG_LABEL_RESET, GUI_MSG_LABEL_ADD, GUI_MSG_ITEM_SELECT technique which is inefficient as you're looking up the control for each message.