TS-295 Create partial field parser

Parser created with tests, visitor pattern and ToStringVisitor implementation. I imagine this will be extended in the future (as well as being pulled out into another library)
A load of work around making the field parser usable. This commit changes:

* Improve the ParserTest to cover the case of a(b,c)/d
* Refactor the name of Paths parameters to prefix and suffix
* Add a new TransformingVisitor that provides an applyTo method to easily visit and compute a result of the visit over an ast. ToStringVisitor has been changed to extend this class and usages of the ToStringVisitor now follow the new simpler pattern
* The 'before second step' extension point methods in AstVisitor have been changed to return a boolean so you can cancel the processing of the second step
* Addition of a load of new visitor implementations:
** FindFields visitor: finds all top level Field instances. E.G. a,b/c,d becomes a list of a, b/c and d
** PathPostfixingVisitor and PathPrefixingVisitor will append of prepend a path segment to each field in the ast, i.e. items could become before/items
** ExpandingVisitor will expand all sub selection nodes into the full path versions, i.e. a(b/c,d) becomes a/b/c,a/d
** MatchesPathVisitor will tell you whether a specific path is matched by a given ast. For example the path a/b/d will match against the ast a/b(c,d)

Test for all the above visitors have also been added

TS-295 Create partial field parser
Add a helper class, Matcher, that will match a number of paths against a single Ast

TS-295 Create partial field parser
TS-296 Update the query string builders to allow the selection of partial responses

First step is to allow the collection of the field data as part of a query. This change adds that.

The next step is to make use of the field to select the correct results
The code that makes the GET query filter the response based on the fields parameter. Specifically:

TS-296 Update the query string builders to allow the selection of partial responses -
* Added a new method - QueryUtilities#filter - that takes some rdf and a predicate and returns a filtered version of the rdf.
* Make top level the NamespaceMap and it's implementations so they can be reused
* Add a new Matchers class that contains utility methods pertaining to Matcher. For now it just contain a matchesAll method
* Pull out the implementation of Matcher to top level classes, this should make testing easier and also allows the implementation of Matchers#matchesAll
** In the process, renamed SimpleNamespaceMap to HashNamespaceMap
* Add a new sesame helper for fetching a NamespaceMap, make SesameHelperImpl implement this method to return the default hardcoded list of namespaces
Add support for full uris in the path. This may change in the future. For now the full uris are encoded as '<' + URLEncode(uri) + '>'

Also make sure that all matching is done at the uri level. I'm starting to think that I need to expand the Matcher api to allow the provision of custom word matching. For now to support this I've added a CopyVisitor that provides extension points to allow you to override specific AST node copy semantics.

TS-296 Update the query string builders to allow the selection of partial responses
Add CopyVisitorTest and javadoc to CopyVisitor
Allow extension of the equality of transformation visitor tests

TS-296 Update the query string builders to allow the selection of partial responses
Add the concept of leaf as the path that a matcher will look for. This pulls out the path splitting to a higher abstraction level making it much simpler to support path segments that contain '/' which was not possible without strange encoding of the path.

TS-296 Update the query string builders to allow the selection of partial responses
Merge partial response code back into the default branch

TS-298 Add functional tests for the new partial response field
There is a bug in the MatchesPathVisitor. This test points it out. It hasn't been fixed yet

TS-371 Implement the new multiple response format for existing search endpoints
BAU - fix the bug in the partial response matcher. Was using peek instead of peekLast
TS-319 - add the maven release plugin and update all the versions to 3.3-SNAPSHOT
[maven-release-plugin] prepare release 3.3
[maven-release-plugin] prepare for next development iteration
[maven-release-plugin] prepare release 3.4
[maven-release-plugin] prepare for next development iteration
[maven-release-plugin] prepare release 3.5
[maven-release-plugin] prepare for next development iteration
[maven-release-plugin] prepare release 3.6
[maven-release-plugin] prepare for next development iteration