Added glm and moved event handling to per gamestate

We can only have one event loop running at a time, so event handling is
now done per-state rather than globally in city.cpp