After signing in, redirect back to previous page
Drop unused function displayDiff()
Add "select all" checkbox for [full] and [partial] squash views
"Select all" on "a" keypress on /filterchanges
Avoid ".../" prefix for files in repo root on /filterchanges
Add --vbox-host argument to the testing framework

Used to override the hostname that the guest system uses to address
the host system.  The default is "host", which was previously the hard-
coded value.
Make sure mailbox client sockets are in blocking mode

In some systems (Mac OS X, in particular) the client socket inherits the
timeout setting from the listening socket.
Auto-create users from githook too in "host" authentication mode
Add utility function for creating a user

Inserts a row into the 'users' table, and, if an email address was
specified, a row into the 'usergitemails' table.

Use this utility function from criticctl's adduser command, and from
critic.main() where it auto-creates users in "host" authentication mode.
Improve handling of initial commits when filter changes

Fixes crash when accessing the [pending] filter when the filtered
set of commits includes an initial commit.
Improve support for diffs including the initial commit

It was previously possible to display the initial commit on its own, but
not as part of a "squashed" diff.
Add utility function for filtering elements by class(es)
Add support for testing "non-standard" operations

If frontend.operation() is called with expect=None, the raw content is
returned without any checks (other than checking that the HTTP status was
"200 OK".)

Also, if the 'data' argument is a string, it's used as-is, without JSON
encoding.
Make mailbox.pop()'s filtering somewhat more flexible

Support 'accept' being a sequence of callables.  If all callables return
True the mail is accepted.
Make repository.workcopy() somewhat more flexible

Support creating an empty repository (no content, no remotes.)  Mostly a
useless feature, but convenient if the purpose is to create an "initial"
commit.

Also support running git with custom environment variables; any upper-case
keyword argument to workcopy.run() is set as an environment variable for
the git process instead of being passed to subprocess.Popen().
Add test for diffs including the initial commit

Also creates a review containing initial commit and two followups, and
checks that the various filters ('pending', 'reviewable' and 'relevant')
show the right diff with the right "Squashed History" log.
Use temporary clones for relaying instead of temporary remotes

The branch tracker adds a temporary remote to the persistent relay
repository each time it wants to fetch a branch from a remote repository.
This works, and saves us the trouble of keeping track of whether there
is a suitable remote or not and what its name is (and some other special
cases.)  However, it turns out that not keeping the remote (and thus a
record of what refs have been fetched from it already) causes "git fetch"
to fetch a lot of objects over and over from the remote, despite them
already being in the local repository, which causes the local repository
to grow indefintely (until GC:ed or recreated.)

To avoid this, and also avoid potential race conditions from concurrent
use of the persistent relay repository, do the relaying in a temporary
clone instead.  Creating a bare clone on the same file system is almost
instantaneous and cost-free.

TODO: Should document the fact that because of this, in particular the
assumption that creating a clone is very cheap, DATA_DIR and GIT_DIR
should be located on the same file-system.  The install script should
also warn if the configured paths are not on the same file-system.
Improve error logging on failed operation

If the status is not the expected one and is "error" or "failure", log
the actual error message (or failure code) too.  It's probably a better
hint at what's wrong than the status itself.
Clean up (standard library) imports in gitutils

Remove duplicate imports; prefer "import X" over "from X import Y"

In particular, don't "from subprocess import Popen as process"; just do
"import subprocess" and call it as "subprocess.Popen" in the code.  (The
name is ugly, but it is what it is.)
Unbreak layout on /checkbranch (the input form version)

At some point the structure of the branch status version of the page and
stylesheet (checkbranch.css) was updated, but the structure of the input
form version of the page was not given matching love.  Do that now, and
also "modernize" it somewhat.

Also, some minor tweaks to basic page generation utilities:

- Always set class ("repository") on the <select> element generated by
  generateRepositorySelect(), and add basic styling of it to basic.css.

- Let PaleYellowTable set document title to same as table title if the
  document doesn't already have a title set.