Migrated all references to IVFunction and its subclasses to RuleWrapped<? extends IFunction<Context,Context>> and appropriate subclasses.  RuleWrapped<T> holds an object of type T and an AnonimisedRuleVariableHolder, providing an interface to the ARVH. All "RIF functions" have been abstracted, with the Functions not caring about anonimisation, but being declared with a subclass of RuleWrapped that contains a relevant subclass of ARVH.  When a Function is created using the function's static method ruleWrapped(), the RuleWrapped extension anonimises the input to the function constructor then constructs it.

RIFExternalFunctionProviders have become part of a more generalised FunctionProvider hierarchy, which exists for the express purpose of taking a construct from a specific input language parser (RIF, CSPARQL, Jena, etc) and extracting the appropriate data to construct the equivalent generalised, RuleWrapped function.  Of course, any functions not provided as part of the default set can be written and inserted during the translation phase, as before, but this method provides for the most widely shared features of all rule/query languages to be utilised easily and optimised once for all cases.

Finally, function nesting now works to make functions with nested value functions to be handled as complete, complex functions rather than a chain of basic functions.  e.g. GeoInHaversineDistance(X, long, lat, long, lat) no longer exists, but is semantically equal to NumericGreaterThan(X, GeoHaversineDistance(long, lat, long, lat))

Package structure needs sanitising