explicit bankClient for server

- server knows the bankClient, who provides the board
- createResult() function split out for each plugin, the server calls
this from the bankClient, to determine any results to feed back into the
rules iterator
- rules iterator now explicitly calls newGame, so the server just starts
one iterator and continues until it ends
- renamed Client to BaseClient
- upateBoard and updateHTML merged (we can use .getMapping() on all
clients, but some may be null)
- PickResult are now a structure with a values array, rather than just
an array (makes it consistent with the MoveResult)