Function: substitute-if

Substitute NEW for all items satisfying PREDICATE in SEQ.
This is a non-destructive function; it makes a copy of SEQ if necessary
to avoid corrupting the original SEQ.

Keywords supported: :key :count :start :end :from-end

(fn NEW PREDICATE SEQ [KEYWORD VALUE]...)