Selecter is spelled Selector
Convert And & Or Filters to take multiple arguments

We were combining AndFilters and OrFilters together to 'and' and 'or'
more than 2 things at once. Here we tweak the filters themselves to take
as many arguments as we want and simply 'and' or 'or' them all togther
with appropriate short cutting as you might expect.
Apply flake8 to filter file

When viewed without white space changes then you can see not much is
different. Only has_key -> key in dict.
Further removal of extra AndFilters

The top level AndFilter can take all the stuff below it as multiple
arguments. It makes it a little clearer what we're after. Basically none
of the stuff in the NotFilters.
Switch from parent & child to node stack

So instead of parsing only the immediate parent down through the filter
methods in the compound and index finder files, we pass a stack of nodes
representing hierarchy all the way to the top.

We do the by inserting the current node into the start of a copy of the
list at each level and passing the resulting list on down.

We then change the Filters themselves from thinking in terms of parent &
child and instead just using the node stack. We then change the Parent()
Selector to return node_stack[1] and change the Child() Selector to
Node() which just return node_stack[0]. An Ancestor Selector has been
added to help choose high levels but we're not actually using it yet.

We cheat a little on the renderer side and create a mini node_stack from
the present parent & data_object and pass that in instead of changing
the code to maintain a full stack. Probably will need to do this at some
point.
Rename NameFilter to InFilter

As it does a 'name in set' test.
Make the build directory overridable

So that we can override it and do comparisons between different builds.
Add basic comparison script

It is useful to be able to compare the output between different
revisions. We used to get this a little from the gh-pages branch when it
was (rarely) updated.

However we're now on ReadTheDocs and it would be nice to have something
closer at hand so we introduce this script.
Merge branch 'filters'