Batch reads from keyboard, vastly improving speed.

This is important for two reasons:
 * Escape sequences can fail if broken apart.
 * Pasting was noticably sluggish.
Switch to using libssh from naclports.
Clean up how libraries are managed.

This includes removing references to build/libssh-0.6.0, now that it is
included in naclports.
Exit the module if name resolution fails.

This is important so that the Javascript code can know that the session is
over, so that it can take appropriate actions.
Implement echoing of ssh keyboard-interactive prompts.

This honors the server's request as to whether the keystrokes should be echoed
for the prompt being answered. This is useful for second-factors such as
one-time passwords.
Clean up error reporting for keyboard-interactive ssh auth.
Retry ssh authentications up to 3 times.

This also allows the user to skip the current authentication method by just
hitting <enter>.
Add notice to session setup window when there's a new version.
Add desktop notification for when an update is available.

This may be controversial. If this becomes annoying, I'll rollback this commit,
or provide a way to opt out of notifications. The point here is to help users
know they need to close their Mosh windows to get the latest version, since
users may leave Mosh running for weeks at a time. It is my expectation that
this will only show when Mosh is currently running, otherwise the update should
apply silently. It is also my expectation that this will only show once per new
update. This is rather hard to test, unfortunately.
Bump version to v0.2.2.22.
Remove early deletion of ssh key, which prevents passphrase retry.
Bump version to v0.2.2.23.
Do not accept zero-size keyboard input.

This can happen if the clipboard is empty, yet a paste is attempted (which
takes nothing more than a right-click in hterm). If Keyboard::Read() returns
zero to Mosh, Mosh crashes.
Major refactor of SSHLogin.

This breaks out the huge SSHLogin function into its own file and class, while
also decomposing it into a set of grokable methods. The interface between
MoshClientInstance and SSHLogin is a bit tortured, and is fodder for a good
rethink and cleanup, but at least the SSHLogin logic is cleaner now.
Eliminate compiler warnings about string literals as "char *".

There are some old functions that return "char *" when they really should
return "const char *". This commit copies literals into properly editable "char
*" buffers (although editing would violate the contract).

As of this commit, there are no more compiler warnings for the main Mosh for
Chrome code. Let's keep it that way.
Store and verify SSH server fingerprints.

This also moves thread creation for SSHLogin back into mosh_nacl.cc, which
allows better handing of data communication between MoshClientInstance and
SSHLogin. It also further generalizes SSHLogin; it shouldn't care that it is
run in a thread.
Remove references to MoshClientInstance from SSHLogin.

This cleans up the tortured interface between these two classes. SSHLogin now
stands on its own, although it still uses the Pepper API (pp::Var, etc.).
Eliminate exit() calls.

Such calls look like crashes to the NaCl runtime, and cause throttling of
module startups, leading to confusion if a user connects and disconnects in
rapid succession (as happens during development).
Bump version to v0.2.3.24.
Fix wide character display issue on Mac and Windows.

The environment on these platforms is not consistent with Linux and Chrome OS:
They are missing $LANG. I consider this a bug with Chrome/NaCl, as the
environment needs to be the same on all platforms for portability. This commit
works around the issue.