Refactor how keywords are matched.
* spar-arg:compare renamed to spar-arg:id=? and second argument is optional,
defaulting to spar-arg:form.
* patterns (noise ...), (noise-keyword ...), and (keyword ...) are eliminated.
* New pattern (ignore-if predicate arg...) ignores a subform if calling the
predicate is satisfied.
* Renamed (value-if ...) to (keep-if ...) with same semantics: keeps a subform
if calling the predicate is satisfied.
* New pattern (value arg) is like (values arg...) but a little clearer.