Refactor and Updates

Tried to clean up some of the main code by splitting out functions and
some renaming.

Added testing functionality to the tests folder so a move sequence can
be provided to acquire the board in a given state.