The UI drawing was really CPU intensive, so for now I've added a flag in
the state objects and in the main file to check whether it should be redrawing
each cycle or not.

States that deal with mostly in-game graphics can probably just return
'true' for 'yes, redraw' every time. I will have to test once I get to
that point.
UI menus seem intensive, so they should only be drawn once, and redrawn
as anything changes (which probably won't be often)