WIP stage 1 - First cut of filter API.

Neither tested, nor implemented. Just API stubs and XML documentation.
Update .gitignore.

Exclude '*.user' - Resharper files.
Document filtering permutations in API.

Updated documentation after reviewing impact of filtering on existing
unit tests.
Extend test to check that a synthesizing factory with permutations doesn't miss any combination of levels.

This currently breaks, as expected - the test can only be met if the
strength guarantee is raised locally for each synthesizing node that
creates permutations. Currently the implementation slots the implicit
test variable for permutation levels into the shared overall strength,
thus being deficient (and hopefully the cause of said expected failure).
Fix bug in test checking permutation via synthesizing factories.

Had glibly assumed that not setting the flag to generate a permutation
example in a tree of factories would generate the same tree structure as
if the flag had been set - this introduced a bug in the previous commit.
Have corrected that, although the test still fails - but for the right
reasons this time!
Fix test breakage caused by strengthened expectations for permutations.

This implements what was promised by the previous commit.
Generate fewer permutation examples for unit test that is just including them for the sake of completeness.

The permutation support is explicitly tested elsewhere - this is just to
make sure that another test has checked the full variety of
possibilities. As that test was taking an inordinately long time to
complete (because the combination strength for test cases involving
permutations has just gone up due to the previous commit), this commit
was done to fix that.
Minor change to documentation comment format.
Now using filters in the factory tests - but the tests pass. This shouldn't happen - I haven't implemented filters yet. Investigate...
Got a failing test now for filtration - that's better. :-) Now to fix the test failure....
Node has snow become a traditional class augmented with active patterns to make it look like a discriminated union.

This is to allow me to add more state to Node once I merge with the
parent branch.
WIP stage 2 and 3 - storing filters in nodes, start of cutover of filling out partial test vectors to using backtracking.
WIP stage 4 - FillOutPartialTestVectorRepresentation now uses a continuation monad - so will be able to backtrack and fail overall.

However, it is currently still disregarding filters, so it can't fail as
of this commit.
WIP stage 5 - support for backtracking added into FillOutPartialTestVectorRepresentation.
.
WIP stage 6 - messy commit after a lot of hacking. Replaced backtracking with cross product of missing test variable levels.

This was motivated by having to systematically cover exclusion
possibilities - the previous approach did not do that.
Tidying up mess from previous commit.
Merge in simple optimisations from 'master'.
Building up result of merge / remove of query partial test vector during downwards traversal.

This is being done side-by-side with the old buildup of the merged /
removed vector to aid in debugging failures by eye. As of this commit,
the logic is correct but the old code provides the results that get
tested. The next commit will use the new code instead.
Now producing removed / merged partial test vector via downwards traversal - but this needs optimisation.
Dramatic increase in performance after hoisting some computations out of the continuation workflow.