Started to better flesh out graph contexts.

Renaming them graph layers and using them as storage space
for all node values.  No longer using some special global
namespace for 'set' node values.

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.
Merge branch 'master' of https://github.com/adamdonahue/nodes