Removing weak references from Hubs.

The weak references holding feature has been removed from hubs.
This is because it makes ordering during the destruction of hubs tricky.
In particular at any given hub, it's hard to tell whether a weak ref spoke
has already been deleted or not.

Some of the constructors for the nodes have also been updated.
This update was to remedy the overuse of the hub->get_spoke feature,
where spokes were cross referencing each other.
If a spoke has a dependency/reliance on another spoke this needs
to be fed in through the constructor and cached.  This method
is also a little bit speedier along with being cleaner at indicating
the dependencies between spokes.

Further cleanup in removing the get_spoke<> overuse seems to be needed.
Also now that we will be passing in the dependencies better through
the constructor we can get rid of the init() method on nodes.
For most nodes we should be passing in the Group object.
The Group object now caches the HubFactory and NodeGraphContext, which
used to kepts as weak spokes on the Group hubs.

The pynode wrapper has been updated with with variadic templates
to allow it to wrap the constructor of all the nodes with their
varying number of arguments.