huge ass commit. filled out most methods, passing most tests, but still sometimes picks illegal moves and does not pass testMove2