Make paths in fx11-build.pro case sensitive
Drastically simplify release.pl.

Previously release.pl did complex parsing of .pro
files to figure out which files to include in the
tar ball.

This change removes this logic and instead performs
the minimal modifications needed under the assumption
of a clean tree and then uses system tools to create
the tar.gz and zip files.
Missed DIST dependency on mkini.sh results.
Adjust build error text (missing submodule dir)

* Adjust the error text of when the build notices a git submodule
for a third party library was not initialized.
The new text should be more precise and compact.
compiler.pri: explicitly target Windows XP when specifying output binary's subsystem.

MSVS 2012 and 2013 default to outputting binaries that require Vista or greater.
compiler.pri: explicitly specify -ARCH:SSE for MSVS 2012 and 2013.

The C++ compiler in these versions os Visual Studio default to
generating SSE2 code, unless this is overridden with /ARCH.
Plugins: add support for the 'path' attribute in plugin auto-update XML.

This new attribute specifies an absolute path on a Mumble services
host that a given plugin is available at:

  <plugin name="borderlands2.dll"
          hash="(...)"
          path="/plugins/<os>/<abi>/borderlands2.dll" />

This path is directly usable with our WebFetch class.

We need this to be able to properly service multiple plugin ABIs
and/or OSes at the same time.

We could have overloaded the meaning of the 'name' attribute, and
have passed the absolute path in there, but the chosen approach
is more explicit about its intentions.

Being explicit about the 'path' attribute also makes it easier to
understand how backwards compatibility is handled: Since Mumble 1.2.5
and prior verisons do not know about the 'path' attribute, they will
keep simply using the 'name' attribute as their pointer to the DLL
file. This means we'll have to keep serving the DLLs for these older
clients at <webroot>/plugins/<name>.

In practice, this means that all plugins that can be requested by
these older clients will need to have a copy that lives at
<webroot>/plugins/<name>. Since these clients only support
(abi=1600, os=Win32) we can ensure on the backend that plugins for
that combo are served at /plugins/<name>.
mumble_plugin.h: change plugin magic values in preparation of the MSVS 2013 switch-over.

Mumble 1.3.0 on Windows will be built with MSVS 2013. That means
that old plugins will no longer load into it (Mumble will crash
if we try), because of C++ ABI differences between MSVS 2010
and MSVS 2013.

To combat this, we switch our plugin magics such that no ABI
mismatches can happen: Old clients will refuse to load new plugins,
and new clients will refuse to load old plugins.

We have a precedent for doing this. See dac82c99 (MSVS 2010 switch-over).
Bump version to 1.3.0
installer: update Product.wxs to refer to the VC120 CRT.

Without this, we'd be bundling the wrong CRT for MSVS 2013.
installer: change InstallerVersion to 405 to be able to merge with MSVS2013 VCRedist.
installer: automatically embed VCRedist 12.0 DLLs when env var MumbleNoMergeModule is set.

This commit updates the old RedistDirVC10 files to point to their new version 12 copies,
now that we build with MSVS2013.

It also implements an easy way to opt-out of using merge modules for the VCRT
redistributable DLLs.

With this change, if the environment variable MumbleNoMergeModule is set,
the installer build will automatically embed the VCRedist DLL files as
regular files into the final .MSI.

To avoid this behavior, one can set MumbleNoEmbedVCRedist=1. So, to build
a Mumble installer with no VCRT merge modules *and* no embedded VCRT DLLs,
one would set *both*

  MumbleNoMergeModules=1
  MumbleNoEmbedVCRedist=1
installer: drop InstallerVersion back to 300. add note about InstallerVersion requirements for VC12 redist to MergeModuleDir setting.

This change effectively reverts commit 0e447428ba8380581297e3e619967a09dda036ed.
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