Internal changes

The mechanism for binding system functions has been reorganized and made more modular. One effect of this is that it is now possible to have different signatures for the same function depending on the configuration; for example the signature for string-join() is different between XPath 3.0 and XPath 3.1. Another effect is that the same mechanism can now be used for namespaces other than the standard function namespace, and this has been exploited to re-implement other function libraries including the math functions, the exslt-common functions, and the Saxon vendor extensions, which were previously implemented in the same way as user-supplied extension functions. This makes the implementation more concise and allows greater control over aspects such as streamability.