Divided VariableHolder interface into two, one inheriting from the other:

VariableHolders now have a single method: variables(), which returns the list of functional variables important to the holder.  This satisfies classes like NamedStream.

AnonimisedRuleVariableHolders now contain the rest of the methods originally crammed into VariableHolder, allowing for anonimisation alongside holding rule variables, and maintaining a mapping from rule variables to anonimised variables.  This satisfies classes such as those that implement IVFunction.

This change requires pretty sweeping revisions of the NamedNode and OrchestratedProductionSystem hierarchy, down to where generics take over (DGNode requires no revision, as it leaves the EDGE and NODE types as generic).

I have also moved the StreamAwareFixedJoinFunction in with the revised rete orchestration classes.