provision-vagrant: A few changes to support other container systems.

This is preliminary work to remove some Vagrant assumptions, to enable
using the same provisioning script with other container/virtualization
systems (particularly to add support for LXC).

- Renamed support/provision-vagrant to provision-test-environment
  to remove the assumption that it only works with vagrant. Vagrantfile
  was updated accordingly.
- Short explanation of how the script runs
- Made CHECKBOX_TOP relocatable to the parameter the script receives,
  though we default to /vagrant if we didn't receive anything else.
  This is because test-in-lxc can place the source tree in an
  unpredictable location and provision needs to be aware of the
  location.
- Made the Vagrant sanity check conditional on $CHECKBOX_TOP being
  /vagrant.
- Modified the code to create the $HOME/src symlink to account for
  different container/VM engines since lxc behavior is different from
  Vagrant, this is explained in the comment for the last section of
  the script.
test-in-lxc.sh: Added script to perform per-commit testing with LXC.

This mimics test-in-vagrant.sh, but using an LXC container instead of a
Vagrant/Virtualbox virtual machine.

The tests run once the vm/container is up are the same miniscripts run
by test-in-vagrant, the "run loop" is identical except that they're run
using a different command (lxc-attach instead of vagrant ssh).

Testing under LXC is not much faster than Vagrant, since the bulk of the
time is spent in the provisioning phase (downloading + installing
packages) which doesn't benefit from LXC's faster creation and startup
times, but a crucial advantage is that it should be lighter on resources
and run on a cloud machine instance without nested hardware
virtualization support. The script includes a KEEP_DATA variable which
can be left blank to use memory-backed overlayfs for the ephemeral
container (this is very fast), or set to --keep-data to use a dir-backed
overlayfs, which is slower but better for low-memory environments. 2 GB
RAM are needed to use memory, and I suggest 4 if possible.

A disadvantage is that LXC commands need to be run with sudo, which
requires a bit more configuration than Vagrant. Required sudo
configuration is described at the top of the script.

Tests are referenced to $HOME, which in the LXC container is *not* the
$HOME of the logged-in user, but the $HOME inherited from the invoking
environment. However this works because the provisioning script creates
the $HOME/src symlink, similarly, referencing the invoking $HOME.  This
test-in-lxc behavior regarding $HOME is a bit strange but consistent and
it works as long as --keep-env is used.
mention LXC in the documentation