Copy predicates when combining Selections.

This makes set operations consistent (changing the original
Selections does not change the resultant). Closes #825.
Add cast check.
Don't add a new top level if the type hasn't changed.
Fix docs.
Print the full tree of predicates used.
Suppress "not used" warning for cloned predicates.
Prune the tree a little when we clone.
Only print predicates at start of search.