Make a quality pass on the code

 - Remove dead code
 - Trim down on allocated memory
 - Ensure the accuracy and usefulness of the tests
 - Add tests if necessary
 - Add contracts if necessary
 - Make tests faster
 - Verify that undo (undoCore) is the exact opposite of make (makeCore) and test if not already doing so
 - Audit the move generation tests
 - Reformat the headers to match phobos style, make easier to read
 - Uniformly use /// to delineate code sections in a block
 - Trim down on and organize imports
 - Change enum containers to use static immutable
 - Move the expected value to be first in assert statements for readability