Started to better flesh out graph contexts.

Renaming them graph layers and using them are storage space
for all node values.  No longer some special independent namespace.

Also nodes will no longer update their own state; instead they will
be read-only from a user's perspective, and all state will be modified
via the core graph* class interface.

Introducing a NodeReference class that will encapsulate those
parts of the current nodes that are common to all nodes, which wasn't
needed before because a node for a given method/arg was globally
unique, but now can store values in multiple graph layers.