(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.
Python doesn't throw errors for things like that.  It'll overwrite the 'nic' model object with a string object, which is what the following code expects to see.

Arguably, we shouldn't do things like that, because they can be confusing.  But they do work correctly.