XQuery Updates implementation

The XQuery update code has been amended to classify expressions as "updating" or "vacuous" as in the Candidate Recommendation. To ensure all cases of invalid updating expressions are properly detected, Saxon now delays some of its rewriting of conditional and typeswitch expressions until the type-checking phase.

In XQuery Update, following a decision on W3C bug 5702, deleting a node that has no parent is no longer an error.

The XQuery Update implementation has been significantly improved, responding to clarifications in the W3C specifications, and an improved test suite. Many of the changes are minor, affecting behaviour in error or edge cases. It has proved necessary to change the MutableNodeInfo interface to reflect the fact that an attribute's identity cannot be adequately inferred from its name (an attribute can now be renamed without changing its identity, and conversely, it can be replaced by another attribute having the same name). In the linked tree implementation, attribute identity is now associated with the identity of the element node object together with the index position of the attribute; index positions are not reused when an attribute is deleted. A method isDeleted has been added to allow testing whether an object refers to a node that has been deleted; no further operations should be attempted with such an object.