Make player names case-insensitive

This is rather ugly, due to the password hashing system and compatibility concerns.  It does, however, make the loading and saving section of the code much cleaner.

The player name can't be changed by the server to the proper case because the hash is generated with the client's version of the player name, therefore the hash from the initial connect may be generated with `ShadowNinja` and subsequent connections with `sHaDoWnInJa`, which the server can't compare.
This simply denys access to clients that don't spell their player name correctly.
A `/choosecase` command is added for removing duplicate entries.

A proper implementation requires breaking compatibility, and is scheduled for 0.5.