Cleanup and refactor Move

Now using an alias to a built-in type instead of a structure. Simplified move creation and improved move validity evaluation.