Better check for user already banned/locked

I believe this should always be correct for banning, but may be wrong
in some obscure corner cases for locking.
Fix Gastro Acid.

- Ability should be ignored, not replaced.
- Also the effect can be Baton Passed.
Check for another SockJS bug
Correct references to Grip Claw's effect.
Introduce `appealurl` config option
Fix Transform.

- Gen 5: User cannot Transform if it or the target is already
Transformed.
- Gens 2-4: User cannot Transform if the target is already Transformed.
- Gen 1: User can Transform in both situations.
Limit one of each move less repetitively.
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.
Revert "Fix move choice validation" for now

This reverts commit 59ae64f840de4b5d0e2d2ebe80f0ce4303dd6283.
Fix move choice validation properly

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.

Compared to the last attempt at this, this commit also properly
handles Hidden Power.
Remove useless check for 'mustRecharge' volatile

There is no volatile called 'mustRecharge', so this check is pointless.
Correct mechanics when trying to use a 0 PP move

There are two cases where a pokemon might attempt to execute a move
with zero PP:

- a move which had PP when selected, but whose PP was subsequently
  reduced to 0 by Spite; and

- a case where a pokemon has multiple copies of the same move, in
  which case it will always be possible to select the move, but it
  will not be executed if it has 0 PP.

Attempting to use a move with zero PP should not succeed.
Fix version of all dependencies

The versions specified are known to work.
Gen I: Correct secondary effect chances.

- 10% is actually ~9.8%, etc.
Fix accidental global `clause`
Patch over a faye-websocket bug
Struggle does not require PP
Introduce globals explicitly
Remove obsolete battle reporting code
Get rid of some config settings