Change channel IDs back to internal instead of server

Using server IDs causes problems with adding tabs that might be used
for things other than server channels.
Add proper support for whisper-in-tab

There are still some outstanding bugs, but basic support is provided by
this commit.
Fix .gitignore and make tabs expand to spaces

Add a newline to the .gitignore file and set Netbean's project settings
to expand tabs to spaces for all languages.
Start restyling the chat interface

* Move to HTML5 (since the only browsers that support this are HTML5
  capable)
* Shrink header to a more reasonable size
* Move chat speed indicator to the Messages header
* Move the channel picker to the far right side of the header
* Add a charset declaration
* Remove the link to NEaB's stylesheet
* Add drop shadow to the chat input to make it look dropped-in when not
  focused
* Change tab's style
  * Outer tabs have rounded edges
  * Make the selected tab stand out more
  * Make the close button more visible
* Keep tabs from wrapping around when there are a lot of them open and
  the chat window is too small to contain them (instead let the outer
  element overflow horizontally with a scrollbar)
Remove old unused methods and general cleanup
Quick fix for channel index problem

This patch 'fixes' the problem caused by using the channels array
indexs as the channel element id's (Removing a channel from the array
causes issues). Solves the problem by just setting the old channel
index to null.
Remove a debug statement from chat.js
A blank channel shouldn't be switched to when created
Remove unneeded comment
Fix bad whisper regex

Whisper regex would think any message with "(to|from) <whatever>&gt;"
is a whisper, no matter where that string occured.
Start switch to RESTful online player list
Add transitions to online list hovering
Fix small bug in new online list
Reorganize HTML and CSS of chat to be pixel-perfect
Fix bad scrolling and scroll detection
Assume new channels are at the bottom
Fix two CSS alignment issues

* Fix channel dropdown in Chrome being positioned below channel header
* Fix input being the wrong size
Remove references to the old whisper dropdown
Fix intermittent whisper problems and old code

* All whispers are now properly routed to the correct tab
* Remove an old option generation function
* Remove some spaces that were added automatically in whitespace
Add @grant metadata to GMShim to follow spec