Correct my use of lxc and generally work nicer with lxc.

- Previously we weren't bothering with lxc-create (we're still not) or anything under /var/lib/lxc (we are now). This means lxc-ls now works.
- Use of lxc-start was previously wrong - you really do need an init within a container (even a tiny small one) so that orphaned pids have a pid1 to reattach to. lxc-execute gets this for us (though does bring in further dependencies, sadly).
- There is no point having a separation between container name in terms of rootfs location and nix container expression - just combine them into one - use the container expression name everywhere. If you really need multiple otherwise-identical containers then copy the expression. Realistically you'd want to change the network config anyway, so again the abstraction is not needed.
- Introduce even more use of exec so we don't create far too many processes.
- Set the lxc.haltsignal to SIGTERM. This works with our use of lxc-init as the init within a container and shuts everything down (I believe nicely, but I'm yet to verify that). This means that lxc-stop -n $container actually works now and doesn't need the -k (though whether this is just killing off the init or whether the sigterm is being propogated I'm not 100% sure yet).