Fully decouples the viewer from the model

Previously the viewer started the server thread. The initialisation is
handled by the GameMenuListener now. When the single player button is
pressed, GameMenuListener will start the viewer and the server threads.