Citadel output

Separated game output from game logic. Allows any new output subclass to be written and dropped into the game.