Use user namespaces

On new enough kernels, sandbox-supervisor now works without being
setuid root.  I know of two regressions:

 * --proc is broken when user namespaces are used.  Fixing this is possible
   but tricky.

 * Running sandbox-supervisor as root with user namespaces fails.  This
   happens because, once root has entered the namespace, it has insufficient
   privilege to map anyone else into the namespace.  This should be
   straightforward to fix.
sandbox-supervisor: Remove non-userns support and all uid and gid code

This now requires CONFIG_USER_NAMESPACE.  It is no longer safe to install
setuid root.  It is probably unwise to run it as root.  The code
simplification should be worth it.
sandstorm-supervisor: Fix --proc
Accept a '-d' parameter, meaning accept defaults

This enables things like a Vagrantfile to run the install script directly.
Merge remote-tracking branch 'amluto/userns'

Conflicts:
	src/sandstorm/supervisor-main.c++
supervisor: With --proc, bind-mount procfs recursively

This is useful: it makes /proc more useful inside the container.  It
also works around a kernel bug that was introduced by Linux commit
e51db73532955dc5eaba4235e62b74b460709d5b and fixed in
41301ae78a99ead04ea42672a1ab72c6f44cc81d.
supervisor: Stop relying on /usr existing for the --proc shuffle

We can use "/".  Yes, this is ugly.
Add -e install option, to bind to non-localhost
Provide a simple Vagrantfile

This Vagrantfile:

* Refers to Ubuntu 14.04, which has a recent (3.13) kernel.
* Uses install.sh to provision the box.

This does not forward any ports other than 6080, and although
it does make the box appear on a private network with the host,
since the install script by default binds all services to localhost,
it is not fully usable for app development.

I tested that 'vagrant up' works.
In Vagrantfile, forward user app ports
Use install.sh -e for Vagrantfile
Set Vagrant VM hostname to localhost

This avoids an inconsistency where the SS_HOSTNAME was set to
vagrant-ubuntu-trusty-64, but when accessed over the browser and
Vagrant forwarding, the browser sends Host: localhsot.
Apparently, unprivileged_userns_clone is Debian-only. This means everyone who received build 0.24 or 0.25 on non-Debian systems now has a broken install and has to manually re-run the installer. Crap.
Add basic working version of backup/restore
Add fs-extra package
Add GrainInfo struct to grain.capnp and persist it through backup.

Backup also includes log now, although it isn't used in restore.
GrainInfo is encoded and is named metadata in the archive. The sandbox's
data now all goes into a folder called data.
Change restore to be a global function. Also add icon for download
Various fixups to backup/restore
Add recent build files to .gitignore
Make grain's title be the filename when backing up