Read output from guest commands more carefully

It seems readline() doesn't work reliably when the underlying file is
non-blocking.

Note: This code does a lot of string concatenations and is thus far from
optimized.  This is not considered a problem; this is just the testing
framework, after all, and performance is unlikely to suffer that much
anyway.  (Besides, the old code did something quite similar.)
Synchronize host and guest clocks when starting VM instance

The guest clock is often way off (due to how it only runs occasionally and
is reset back to an earlier point all the time) and it's simple enough to
synchronize the clocks.  It also doesn't really matter that much if they
are out-of-sync, but timestamps in commit meta-data tends to be quite far
into the future.
Stop Apache and Critic services when testing has finished
Support pausing testing before and after test groups
Support measuring code coverage when running tests

Add new small module "coverage", which exports a function call() which is
used to call another function with arbitrary (positional and keyword)
arguments and return its return value, while also recording coverage.

Optionally (depending on system configuration) wrap the main WSGI entry
point (critic.main) as well as background service startup using this
call() function.

The coverage module also serves as a command-line script that merges the
results of multiple separate coverage recording sessions into a per-file
and per-context ("wsgi" or specific background service) information and
outputs in JSON form.

The testing framework enables coverage collection when given the new
argument "--coverage".  It then writes (only) the coverage JSON data to
stdout.  The regular testing framework is output to stderr instead in
this mode.  (Using "--quiet" is typically meaningful; when running in
coverage collection mode, actual test results are less interesting.)
Run 'adduser' with "--gecos ''" argument when adding users

This prevents it from prompting for input (full name, room number, et c.)
and from printing (non-fatal) error messages when it can't read from stdin
(which it can't since we run it using "ssh -n".)