change logic to use scalar refs for pruning

A ref now signals pruning and the dereferenced value indicates
if the constraint was satisfied or not.

Pruning is sticky -- once a rule flags for pruning, it carries
forward.  E.g. a rule can flag \1 and even if a subsequent rule
is false, the end result is \0, meaning prune and don't return.
fix max_depth logic

At max depth, we return \1 to signal we want the directory even
though it should be pruned.
use new \0 logic for skipping directories
improve min/max tests
document logic changes
improve coverage
refactor and tidy logic methods
tidy code
make skip logic more explicit
revise skip logic
throw exceptions on invalid rules or return values
croak if rule can't be added, not carp
more coverage and logic improvements
document new custom logic rules
note incompatible change in Changes
remove legacy logic