Big Refactor

Since many methods are starting to look like nothing more than calculated
properties (color, position, board, etc), it seemed consistent to refactor
the board to collapse set, get, remove into "piece".

This commit brought to you by Unit Testing! Without which this would have
been a nightmare.