Metadata extractor and Maven updates (saxon95 branch)

This pull request is the **saxon95** version of pull request #118. However, it uses a different strategy from previous work, which I have found is much more suited to the long-term maintenance of parallel working branches in Git.

Rather than continuing to cherry-pick commits, this change *merges* **saxon94** &rarr; **saxon95**. Prior to the discontinuation of the **saxon94** branch (if that ever happens), changes can be made in the **saxon94** branch and then the branch is merged into the **saxon95** branch. This dramatically simplifies the long-term maintenance of the two releases.

This change lists many commits, but in reality only has the following impacts:

1. 69c516fbe9bc19b1ad17d896e1f052d44e239a05 merges the existing **saxon94** branch into the **saxon95** branch, creating a reference point for future work. The *only* change to the **saxon95** code as a result of this is moving one field declaration down two lines so it matches in both branches.
2. 1135a0d5d76098867c601d9b0e06b8d6ff888371 applies the changes in pull #118 to the **saxon95** branch.