initial groundwork for lobby interface

This adds a couple of pieces I need for the lobby script.

- Texture replacement in a Model by texture name
- HFActionEvent and HFBackEvent (these are meta events we define that can be fired via various input devices)
The QMouseEvent gives you a QPointF and that was the first thing I mapped to HFActionStart. Can change if it makes sense but I'm not sure there's strong reason either way.