Deprecate `room.i`

This has the side effect of making removeRoom O(n) instead of O(1ish),
but in return, we stop creating a whole bunch of objects, and also
less state that can become inconsistent is good.
Add Team Preview to Balanced Hackmons
Remove Hackmons

http://www.smogon.com/forums/threads/announcement-regarding-hackmons.3515735/
Update NU stage
Remove Hackmons in /om command

This is to match with https://github.com/Zarel/Pokemon-Showdown/commit/233133fac0399320d99cb470120816dd2ef4dfbb and to avoid any confusion among users
Merge pull request #1162 from macrarazy/patch-12

Remove Hackmons in /om command
Add back Hackmons as challenge only

Could have sworn Custom Game didn't have Team Preview
Update formats.js

- Ban Mawilite in Almost Any Ability as it follows the OU banlist
- Forgot the HP Percentage Mod in Hackmons
Update Mega Mawile's tier
Properly add the new Hackmons
Support pipe operator (|) in /evalbattle
Fix Quick Guard failing to protect from moves called by other moves
/slowlockdown command

Like /lockdown, but doesn't tell existing battles to hurry up.

For use in smogtours, but I guess other servers can use it too.
Show error message when joining active battles
Room refactor

Now ChatRooms and BattleRooms inherit from a generic Room prototype,
which means, among other things, less code duplication between them.

In the process, sending old message times has been refactored to be
much more sane, and now uses |c:| and |:| instead of |tc|.

Other changes include that user symbols now show up in battles,
like in chat rooms.
Drop support for /help all

Also drop support for the rank-specific command lists, like /help @
Fix missing semicolon
Rename Hackmons -> Classic Hackmons
Merge pull request #1163 from Slayer95/evalbattle

Support pipe operator (|) in /evalbattle
Merge pull request #1164 from Slayer95/quickguard

Fix Quick Guard failing to protect from moves called by other moves