(pr)evolutions are now just pointers.
First-pass at learnsets.

The following have not yet been implemented:

* Egg breeding chains (all egg moves are currently considered valid)
* Dream World abilities with certain moves
* Knowledge of Dream World releases
* Check freely switchable formes as well as pre-evos.
* Event Pokemon
* Evolutions that require a move to be known.
Some refactoring for learnsets
More documentation and refactoring for learnsets.
Add Rotom learnset tests.
Add Shaymin, Deoxys, and Rotom to learnsets
Add one more test for Rotom learnsets.
Learnsets: Evolution through knowing a move.
Tiny refactor.
Abilities/Items: Use displayName, not name
Data: evolvesInto now an array; Eevee has more than one evo.
Battle: controllers validate moves/switches.
Fix chat html injection
Sending invalid JSON does not crash the server.
BattleServer: team validation, but not plugged in.
players dont always have teams attached.
Finding battles auto-validate teams.
Gen 4: Rotom must know forme moves, but not in Gen 5.
Implement Team Preview and 2v2.

This required an overhaul of the requests system, which was 1v1 only.
The 2v2 support is manual-only: no UI exists to support it as of yet.

Team Preview is a little hacky until smarter clients come along which
can just take a switch in event and fill in information about the
opponent's team.
Add splash page.