Fix major derp on move validation; more tests
Change all move validation logic to use vectors