add a new path to make use of a move list

- rename generateMoves to generateBoards as it writes boards directly.
- create a new function generateMoves that generates a move list
- add makeMove function that 'makes' the move
- new approach is ~30% slower :(