This introduces the Windows installer that we'll be shipping with
official RBTools releases, starting in 0.7. It's based upon Bruce Cran's
installer work, which makes use of WiX and Portable Python to produce a
standalone RBTools install independent of any system installs of Python.

This change extends Bruce's work to automate the building of the installer
and to isolate the build environment from the system. There's a
build-installer.bat file that handles the installation of Portable Python
(guiding the user through a Minimal installation on the first build),
stripping it, installing RBTools and its dependencies, and building the
WiX installer.

This must run on a Windows install, and does not run automatically when
we perform builds. It must instead be run manually within a suitable
Windows build environment. That environment does not need Python installed
up-front, but does need WiX and MSBuild.exe (part of Visual Studio or
MS Build Tools, though currently only tested with the former).

Reviewed at https://reviews.reviewboard.org/r/6690/
Add support for Team Foundation Server repositories.

This change adds a new client for TFS (TFVC). It relies on the presence of the
'tf' command-line tool, which is available either as part of Visual Studio (on
Windows) or via the "Team Explorer Everywhere" package (which is a java
application that can run on just about any platform).

This is intended for use with the TFS SCMTool which is being developed as part
of the Power Pack.

Diffing is done basically by hand, because the 'tf diff[erence]' command is
kind of crummy, even when calling out to GNU Diff via the TF_DIFF_COMMAND
environment variable. In particular, when there are added/deleted files, rather
than including the diff for that file, it just says something like "X is only
present in revision Y". The diffing logic matches that which is used for the
post-commit implementation in the TFS SCMTool.

At the moment, this only supports posting pending changes from the working
directory. There's the beginning of an implementation for committed change
ranges, but when there are moved files, there's no way to match up the orig
file (delete) from the new file (add). I do intend to have it try its best to
post and only give up if a changeset includes more than one moved file, but
that will come later. For now, committed changes can be posted via the web UI.

Testing done:
- Posted review requests that had edited files, added files, deleted files,
  renamed files, and moved+edited files.
- Verified that binary files were shown correctly.
- Ran unit tests.

Reviewed at https://reviews.reviewboard.org/r/6646/