Added ability to dive into groups.

Interactions are now spokes. They are attached to group node hubs.
Interactions store user interaction state, and they are now associated
with groups. This allows state such model view positions to be cached
properly as we dive in and out of groups.

Cleaned up the factory construction of group nodes and root nodes.
The group geo loader spoke type has been changed to geo loader,
reflecting the fact that the base geo loader class is the real interface
to device loading.
The various node spokes has been reduced to just the NodeSpoke,
also reflecting that fact that the base Node class is the real interface
being managed.
However the HubTypes still makes a distinction between nodes and group nodes,
as they vary quite a lot in terms of the spokes their respective hubs contain.

Also the separations of responsibilities between the NodeGraphContext and
the NodeGraphState has been improved. We've moved all of the device related
stuff in the NodeGraphState and it also maintains issues such as selections
and the edit and view nodes.
This is quite useful as we intend to have more "layers" to the node graph
drawing, such as overlays, backgrounds and hubs.