Separate notion of Team (GOOD = player, BAD_1 = engine) from Side (white vs. black) to allow random side selection.
NGCGame: use HUD for announcements; add check indicators in HUD corners; announce own-side moves too; write plain-text version of logbook; add evil_side persistent and luminance_mult parameter; move engine code from initialize to prepare_engine; move announce_check code into finish_move.
NGCFlag: handle everything on the original object instead of cloning; use HUD for question text; fly back to origin when frobbed/dropped.

HUDMessage: add position and offset members; add luminance_mult argument to set_color; improve color calculations; fix border drawing; make topic member public.
GameMessage: new HUDMessage subclass for convenient setup of NGCGame-related messages.

StartGame: new unofficial event for use by NGCGame.

Game: use unique_ptr for self.
Engine: use unique_ptr for self, streams, and buffers.
Mark last two half-moves on the proxy board.