(WIP) Immutable headnodes

This is probably worth looking at now; there's still some work to do, but it's roughly the shape I'm shooting for.
The current plan is to just query libvirt directly, but this makes
testing even more of a pain, so I'm putting this on hold while I make
some enhancements to our test infrastructure.