chop up move validation code

Going to revisit move generation in a nicer way.