1. After game ends normally, server will broadcast game status to
clients (in reverse order so that its own client is the last one to
terminate). 
2. After server cannot find a backup in chooseBackup(), it means its own
client is the only player. It informs its client to terminate by
updating game status. The method chooseBackup() returns void instead of
boolean.
3. Client check game status and decide whether to terminate.
4. Update IServer to exclude functions that are not suitable to export.
5. In primaryFailed(), verify by pinging the primary server.
6. Make only methods exported to IServer public.
7. System.err.println seems causing synchronizing problem.
System.out.println resolves it. Strange.