Fix super derp on Pawn movement (Black Pawns couldn't move); abstract and add typechecks to move_piece function