separate things into lib/ and t/
fix a bug in board rendering

All the pieces placed *after* the move was shown, not all the pieces before it.

Also refactored the board to contain Any instead of 'empty' for empty cells.

Also found and fixed a problem where the placement induced by the Swap move
didn't get a color properly.
add a way to render a board at a given move

and a .gist method so that we can print moves without an infinite loop
can now match against swap moves too

They are really a kind of (re-)placement, also.