Refactored the code from using an observer to a server push -> client architecture.

Instead of watching the game document for phase changes, the server will call client methods.