code: public final <C> Ix<C> reduce(IxSupplier<C> initialFactory, IxFunction2<C, T, C> reducer) {
          return new IxReduce<T, C>(this, initialFactory, reducer);
      }
docs: Given a per-iterator() initial value, reduces the elements of this sequence into a single
  value via a reducer function.
  <p>
  The result's iterator() doesn't support remove().
  @param <C> the reduced value type
  @param initialFactory a function called for each iterator() invocation and returns the first
  reduced value
  @param reducer the function called with the previous (or initial) reduced value and the current element
  and returns a new reduced value
  @return the new Ix instance
  @throws NullPointerException if initialFactory or reducer is null
  @since 1.0
  @see #reduce(IxFunction2)