Optimise initial suggestor setup, pass 1

 - Be more careful about what data we pass around, so we don't
   recalculate things
 - Stop using collections.Counter, and implement our own bag-like
   structure for checking whether a word is in the board