Make a quality pass on the code

 - Clean up imports
 - Remove dead code
 - Trim down on allocated memory
 - Make tests faster
 - Ensure the accuracy and usefulness of the tests
 - Add tests if necessary

Items specific to this pull request
 - Verify that undo (undoCore) is the exact opposite of make (makeCore) and test if not already doing so
 - Audit the move generation tests
 - Simplify make* and undo* if possible
 - Reformat the headers to match phobos style, make easier to read
 - Add testing that the hash code is correctly modified/restored in the incremental updates in make and undo
 - Trim down on and organize imports