CLJ-1237: Eliminate stack accumulation in reduce when switching impls

Creates an Unreduced type to use as a flag when switching impls. Now
seq-reduce behaves somewhat like a trampoline.