Implemented movePiece() and switched from "phases" model for moves to
"expected move"

Switching from phases to expected move simplifies a lot of the code