Move name mangling into node class

The general idea here is that name mangling will happen _once_ for
each node in a will-defined manner.  The end goal of this is to get
rid of this mechanism of referencing other nodes by mangling their
names in a consistant manner and instead to replace it with proper
type-safe C++ pointer operations.