Log output from guest commands per line

This has benefits:

- Lines have individual time-stamps, which makes it possible to see
  where time is spent during lengthy operations (such as install.py.)

- If a command run in the guest system gets stuck, it's possible to
  see what, if any, it had output prior to getting stuck.

- More fun (immediate feedback) when running tests manually.
Let --vm-hostname default to same as --vm-identifier

That's how I've set up all my instances so far, and it's boring to have
to write the same name twice all the time.
Add support for installing packages in instance

Extend the testing.tools.upgrade tool to support installing extra
packages in the instance and retake the snapshot afterwards.
Extend testing.tools.upgrade: support custom maintenance and reboot
Add quick install utility script

Starts a VirtualBox VM and installs Critic in it, optionally interactively
(without --headless or other arguments) and then pauses, allowing the
installed system to be used, before it stops the VM again.
Improve testing framework's detection of locally modified files

Use "git diff HEAD" instead of "git diff" to include staged files in the
check.  Also use "git clean -n" to search for untracked files.
Output test summary after running tests

Makes it possible to quickly see if any tests failed or any errors
or warnings were logged.  In particular when running with --debug,
such information is easily drowned among all the other output.

The majority of the changes are related to wrapping the logger
in a wrapper class that counts errors and warnings.  It also has
the bonus effect that it converts (the effect of)

  logger.debug("foo\nbar")

into (that of)

  logger.debug("foo")
  logger.debug("bar")

which produces a more uniform output.
Use SMTP authentication when running tests

Some more code gets tested this way.