Fix move choice validation

The previous implementation of move choice validation allowed various
checks to be bypassed with crafted /move commands. For example, it was
possible to use arbitrary moves while in the invincibiltiy phase of
two-turn moves:

  http://pokemonshowdown.com/replay/dev-customgamenoteampreview-205

This commit fixes the validation mecahnics.