Use a real IRC object in some tests.

Additional functional tests of window.irc.IRC will need a full
object embedded in these tests, so make use of a real one rather
than an anonymous skeleton object.

While here, do some major CoffeeScript cruft cleanup.
Normalize channel names in window.irc.IRC.

They are always keyed by lower-case key, but many parts of external
code were arbitrarily accessing elements of the "channels" object
without case-folding. Make it an internal-only "_channels" object
wrapped by accessors for find/new/delete which manage the object's
internals.
Fix sorting of internal window list.

The sort() method needs a <0/=0/>0 comparison result. Rather than
implement that fully, use the same heuristic as for ChannelList,
via a simple index-based search.

This fixes Alt-[PAGE]{UP,DOWN} ordering issues, where the selection
seems to jump around randomly. This is most commonly seen with IRC
bouncer backends, where the "server" issues JOINs automatically.
Use chrome.runtime.lastError.message for rendering socket errors.

This is a built-in textual string. For additional information,
also still include the error code (turned into a positive number).

Resolves issue #193.
Move updated cursor position to the end of whitespace on completion.

If there are extra spaces at the end of the text while doing
autocomplete matching, put the cursor at the end of the string
of spaces, rather than right after the (possibly failed)
completion.

Resolves issue #97.
Allow <server>:<port> syntax optionally for /SERVER command.

This allows both colon-separated (Web standard) and
space-separated (ircII argument standard) server and port
arguments. Includes extended usage message.

Resolves issue #194.
Add Ctrl-W as a hotkey shortcut for /part (close channel/query).

While here, clean up CoffeeScript cruft from the hotkey tests.
Merge remote branch 'origin/test_cleanup' into tvierling
Merge remote branch 'origin/channel_normalization' into tvierling
Merge remote branch 'origin/autocomplete_cursor' into tvierling
Merge remote branch 'origin/colon_port' into tvierling
Merge remote branch 'origin/ctrl_w' into tvierling
Merge remote branch 'origin/textual_errors' into tvierling
Merge remote branch 'origin/window_list_sort' into tvierling