Pichu-Spiky-eared shouldn't appear in random teams

Pichu-Spiky-eared has been excluded from the random team forming as it is not available in BW2.
Merge pull request #152 from Joimer/patch-5

Pichu-Spiky-eared shouldn't appear in random teams
Remove unused dependency

The 'request' module is currently unused so it doesn't need to
be included in package.json.

In addition, GitHub is now served over SSL (and has been for
a while).
Move socket.io to optionalDependencies

The default configuration of Pokemon Showdown does not use
socket.io, so it is more appropriately marked as an optional
dependency. This change is largely cosmetic because npm install
will still install optionalDependencies.
Implement Healer
Fix mistake in previous commit
Implement Minus & Plus abilities
Hidden Power fix:
- Random battles and automatic detection sets Hidden Power IVs correctly
- Hidden Power now always does damage based on user's IVs
- User's Hidden Power base power is now reported
/potd is supported again

I've introduced a new function: Simulator.eval, which allows chat
commands to evaluate raw JavaScript in the simulator process.
Require client to acknowledge requests

In certain laggy situations, the following sequence of events
was previously possible in a battle:

1) Server makes request R_1 and R_2.
2) User 1 selects decision D_1 for request R_1
3) User 2 selects decision D_2 for request R_2
4) Server receives D_1 and D_2 and runs the turn
5) Server makes request R_3 and R_4.
4) Due to lag, User 1 does not realise that the server has
   already run the turn. User 1 wants to change his or her move
   for request R_1, so User 1 cancels decision D_1 and sends in
   decision D_3, intending it to be for request R_1.
5) User 2 selects decision D_4 for R_4.
6) Server receives D_3 and considers it to be the response to R_3,
   rather than the response to R_1 (which was what User 1 intended).
7) Server receives D_4 and considers it to be the response to R_4.
8) Server runs the turn.

The result of this sequence of events is that a move that User 1
intended to be for request R_1 is instead used for R_3, which has
the effect of depriving the user of the ability to make a reasoned
choice of which move to use for R_3.

This commit attempts to solve this problem by requiring the client
to acknowledge having received a request before the server will
accept a decision for that request.

Unfortunately, there is no seamless way to implement this in a
backward-compatible way. In other words, if the client were updated
to always send acks, it would no longer be able to work with old
versions of the server. For example, if the ack were added to the
choice string, old servers would no longer be able to handle choice
strings sent from the client. Similarly, if the ack were added
in the form of a new command (say, /ackrequest), old servers would
emit an unrecognised command error on receiving the command.

This commit maintains backward-compatibility by introducing a version
field to the init data structure sent to the client when joining a
battle room. This version should be incremented for any future
backward-incompatible changes as well.

The implementation of the ack request system is that the client must
send in "/ackrequest rqid" for each request, where rqid is the ID of
the request. If the server has not received an ack for request 'rqid'
when it receives a decision for request 'rqid', it discards the
decision and asks the client for another decision.

The corresponding client commit is Zarel/Pokemon-Showdown-Client@ccf0a977337c648ed8e1d489101f605fb2abfdaa
Fix mistake in comment
Use more logical sanity check for /ackrequest

The previous check for !room.decision was fine, but it's more
logical to check for the presence of the ackRequest method.
Fix Ditto with new Hidden Power code
Add isAdjacent function
Used to check if two allies are adjacent and have not fainted
Implement Flame Burst
Refactor requiring the client to ack requests

This refactored version checks the rqid as part of the decision
data, rather than introducing a new /ackrequest command. This
change is done in a backward-compatible way.

Most of the code does not change compared to the previous version.

The corresponding client commit is Zarel/Pokemon-Showdown-Client@3b82cf5cecac1ae3565f615f25699232d2307b96
Creating formats-data.js for gen4 tiers
Fix Power Trick
Mimic and Sketch moves now target correctly
Merge pull request #156 from Relados/patch-2

Creating formats-data.js for gen4 tiers