Implement draw offers, fix waitForOpponent Jetstream bug
Draw offers: player writes drawOffered to their record, opponent sees
accept/decline banner via Jetstream. Accepting writes draw result,
declining just dismisses. Making a move implicitly declines. State
persists across page reloads.
Also fixes: waitForOpponent ignoring events with status != active
(prevents premature transition when creating game as black),
connectJetstream called before PDS write (prevents dead Jetstream if
write fails), game controls hidden until first move played, explicit
result tracking for resignation and draw by agreement.
authored by
tangled.org
0a5175f1
88907421