Support temporal ability changes

- Implement 'abilitychange' volatile to keep track of any temporal ability acquired.
- Skill Swap activation no longer requires the abilities as arguments. This is relevant as in-game they are not revealed if the move user and the target are allies.

Fixes https://github.com/Zarel/Pokemon-Showdown-Client/issues/250
I mean, we use `(A || B)` in some places, but I try not to use `A = A || B;`