split up onUpdate() methods into onUpdateGameState and onUpdateFrame

this will help avoid needing to place a lot of update logic that is
tied to the frame rate (e.g. anything not related to physics
integration) in onRender()
ScreenEffects should also have both onUpdateGameState and onUpdateFrame
onRender()'s 'delta' param renamed to better reflect its purpose