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.
Add basic test for /checkbranch
Add basic test for /fetchremotebranch