Add quota monitor to tear down containers that exceed their disk usage limits

This diff includes a few of things:
1. A class for monitor quota usage and tearing down containers that exceed their limits.
2. A small C program for reporting quota usage. This is necessary because repquota
   has several bugs that prevent us from using it to reliably check quota usage.
3. Small refactor that moves everything under the :quota config hash. This makes sense,
   as we only need the uidpool if quota support is enabled.

Test plan:
- Existing unit tests pass
- New unit tests pass

Change-Id: I8dccd91bb4571f051c7a328d22436b77c6fb3f0c
Stylistic fixups

Change-Id: Ia7845e64790afd6051f3d77ced0ebc12339104ed
warden: Run scripts inside container through shell

Previously, EM executed scripts in the context of a container by
connecting to a Unix socket itself. Because warden shells out for every
other task it does, executing scripts inside a container is now also
done by shelling out. Making this work right using existing tools
proved to be cumbersome, so I included a small C program that either
listens or connects to a Unix socket.

Change-Id: I7f6df9786b9631aff2bd57cc1d20c8d337415bf0
Merge "warden: Run scripts inside container through shell"
warden: Call setuid before running scripts inside container

Change-Id: I3beeaab7fd19114ca3e75ee3122493e85dd2eb6d
warden: Remove lxc-tools dependency

The work that needs to be done to create a namespaced process is so
little that we can do it ourselves. Apart from removing a dependency,
this also gives more freedom in configuring cgroups and better startup
performance.

Change-Id: Ifba18027f5f7d4163b6a180db2ef37678316cd00
warden: Update Makefile target; fix compiler warning

Change-Id: I5f05c3e02d1ff33f9849937159212b4a32a06755
warden: Rework container management scripts

Change-Id: I3588b0a3cee13817903d8c2e103734b8ff55cf6d
warden: Make setup use same Ubuntu mirror as host

Change-Id: I5d4ca246208b0c57d8ed1cb1598f35e409f259cf
[warden] Allow base chroot specification during setup

This adds the ability to specify a specific directory to install the chroot in,
as well as flags to disable debootstrap and apt setup.

Test plan:
- rake setup && rake spec

Change-Id: I8064aa2b757911f3241da26337a40ff1fb1d254b
warden: Ignore build artifacts

Change-Id: I9ef99b6673339e89c9b5b31c97879c9d3cc11223
warden: Make prelude in every shell script identical

The `readlink` call is not needed because $0 contains either the
relative path to the script, or the full absolute path when the script
is located via $PATH.

With all scripts having the same prelude we don't have to make
exceptions to the behavior we expect them to show.

Change-Id: Icb6e5ff64ef89ea70264102c9608d9ea1a57a5c6
warden: Move clone utility to its own directory

Change-Id: I5ee05569f80f571af030d1da0d828d4c481ecc97
warden: Move code to execute and wait for script to util.c

Change-Id: Ib943b60b9592b6f8453e8b235d30380828a2cfed
warden: Add more hooks to execute on instance start

Change-Id: I78ccced5aa16e1f1a87aaa2828a31f9536e2e47f
warden: Isolate per-instance mounts to their own namespace

Change-Id: I198dc6ca9f81e0f71da7ab5746e6e18ef6ad0686
warden: Install and configure openssh-server

Change-Id: Ifd8830b8a16f39bd2773eaee4bda097115da96db
warden: Give containers their own fs

Change-Id: I97d1ea8af9adef07486e230012f2b587f6d14599
warden: Extract code to multiple files

Change-Id: I7411adb1186742800a09c11fee0a5b450921fb0f
warden: Add /dev/tty to base filesystem

Change-Id: I3d164448622965885d9092b59298fc6888399980