Improved path matching to provide more complete information.

Previously, PathMatcher::match() returned either Match or DescendantMatch, despite the fact that it was perfectly possible for both to be true at the same time. It now returns a bitmask communicating the full information, and also adds a new AncestorMatch value for cases where an ancestor matches.

This will make it possible to fix existing problems in the Prune and SceneElementProcessor nodes, and then to subsequently write an Isolate node.
Fixed Prune node's forward declarations.

Previously it would not correctly remove the forward declaration for an object whose ancestor had been pruned.
Added todo to fix problem in SceneElementProcessor.

I thought this would be fixable now (and technically it is) but we don't currently have the nodes we need to demonstrate the problem in a test case - we need some nice deformers for that. Perhaps when the OSL module is merged and provides a deformer.
Added a ScenePath todo.

The new suggestion is much better than the old one.
Added an Isolate node to GafferScene.

This removes all paths which are not directly above or below the chosen location - particularly useful for singling out certain assets from a large scene.

Fixes #564.
Merge pull request #567 from johnhaddon/isolate

Added an Isolate node to GafferScene