Use same consistency model for headnodes as for projects.

This is based on a discussion I had with @okrieg the other day.

I still need to add more tests, and check the bits that the test
suite can't hit on a real setup. I also haven't added checks for
the dirty bit in all of the required places.
Add unit tests re: dirty bit for headnode_connect_network.

Plus a bit of refactoring (_prep* helper methods). One of the tests
is failing which is to be expected.
Add check for dirty bit to headnode_connect_network.
Add dirty bit tests to the rest of headnode_*.

This covers all of the api calls that should fail when the headnode has
been started. Two of the tests are failing, since the needed checks have
not been added.
Add the remaining needed dirty checks to headnode_*.

Along the way I discoverd that headnode_delete_hnic hadn't been updated
since we made *nics namespaced by their *nodes, and fixed this. This
probably would have done the wrong thing if we had multiple headnodes
with nics by the same name.
Add cli wrappers for headnode_{start,stop}