#7 convert observers to listeners

Convert GameController to be various forms of Listeners rather than an Observer to several kinds of events.