cull_nonmatching_trees method added

This gives a way to address:
https://github.com/OpenTreeOfLife/phylesystem-api/issues/135

If cull_nonmatching=true is passed into a call that would
previously return a NexSON tree fragment then the response
will now be a NexSON with the nonmatching trees omitted.

These trees will not be in the lists (and empty trees groups
will be culled). But there can be dangling reference to trees
in the full study in some of the annotations. So the client
code must be prepared to deal with some broken references if
it wants to traverse all of the annotations.
conversion to requested nexson version.

Unlike with other forms of slicing a study into pieces, when
we use the cull_nonmatching... feature, we can support
conversion to the user's requested version of the NexSON
syntax. This new code and test make sure that this works.
raise exception for unexpected cull_nonmatching value