MainWindow: fix a bug where user/channel actions were enabled even though no user or channel was selected.
Fix incorrect handling of mumble:// links

If a user is connected and authenticated on a server,
and he/she clicks a mumble:// link that connects him/her
to the current server, he/she is moved to the channel
specified in the link. Previously, this would disconnect
and reconnect the user to the server.

If a user is connected to one server and follows a
mumble:// link to another server, he/she is now
placed in the channel specified in the link.
Previously, the channel they would be moved into
would be the channel they were in on the first
server.
Reorder Mumble.proto to match ordering in Message.h.

While this should have no effect on the output, making the order of definitions
match makes it easier for third party implementers who are likely to work from
the .proto file.
Be more stringent about properly escaping external strings in HTML ('rich text' in Qt-speak).

This commit ensures that external-ish strings are escaped
using Qt::escape before being used in a rich text (HTML)
context.

This patch focuses on QMessageBox's body text, the Mumble log,
and tooltip texts.

Fixes #1208
Log: fix typo in 'image too big' warning.
UserListModel: fix non-PCH build by including QTextDocument header for Qt::escape.
Fix auto-reconnect behavior when kicked or banned.

This commit fixes a regression in Mumble's auto-reconnect
functionality which made clients auto-reconnect to a server
even after being kicked or banned. Historically, Mumble has
not worked this way.

The new auto-reconnect behavior showed itself due to a bug fix in Qt
(Qt 4 commit: 488cb66, Qt 5 commit: e145b67).

The Qt change fixes QSslSocket such that a remote close (at the TLS
level) properly emits a QAbstractSocket::RemoteHostClosedError error.

Prior to this change, Mumble would simply treat a TLS-level remote
close as a client-initiated disconnect, and therefore not attempt to
auto-reconnect.

With this new and correct QSslSocket behavior in place, Mumble's
previous handling of auto-reconnect is insufficient. Since a kick/ban
now results in a TLS-level remote close, the client has no way to
determine whether a given remote close error is due to a kick/ban,
or due to the server shutting down. Note that a server shutdown has
always, even before this change, emitted a
QAbstractSocket::RemoteHostClosedError error. This is seemingly because
a server shutdown closes the underlying TCP socket instead of sending
a TLS-level close notification.

To fix the situation, this commit adds a flag to MainWindow that
signals whether the client should try to attempt an automatic
reconnect if it gets disconnected. When the client is kicked or banned,
this flag unset. This restores Mumble's previous auto-reconnect behavior
when kicked or banned from a server.

Fixes #1189
Allow user renames via UserList without requiring a reconnect.

This commit also adds a check to Murmur's UserState handler that
discards UserState messages that come from users. Only Murmur
can send UserStates with a name.

The client-facing way of renaming is through the UserList. When
a user is renamed, Murmur will broadcast a UserState with the
given session and name to perform a live rename operation.