Make contains() non-recursive.

Add a few more tests for contains().
Moving filter() into Set2.
Move numeric() into Set2.
Basic path selectors implemented for extract().
Adding tests for {n} and {s}
Implement presence and equality attributes.
Added some more operators.

Attribute + {n} is still not working.
Making attributes work with any selector type.

Attributes work with all base selectors.
Fix muliple attribute conditions.
Add attribute pattern matching.
WIP, adding sort() and remove()
Extracting duplicate loops.
Add remove() and insert()

Also add support for multi insert and multi remove.
Extract common method.
Fix sort() not working.
Move Set::check across.
Move combine() across.
Move Set::format across.

Remove the {0} style of formatting.  Custom formatting
syntax is a bit silly. sprintf() is more than expressive enough
for this method.
Add tests for issue #104
Add apply(), map() and reduce()

Add tests as well.