update to v3.0 of middleclass

and make required changes for code to work again.
include it as a git submodule instead of copying the file manually
into source.
update to latest version of hump
switch to hump.gamestate for game state machine

stateful is great, but has some problems as a game state machine:

hump.gamestate allows arguments to be passed to states when switching.

we don't have to check if a state table still contains a function
before calling it: stateful removes functions whereas in gamestate the
states are separate tables.

hump.gamestate now has push and pop functions too, which I think was
we switched away from it in the first place.