SI-2818 Makes List#foldRight work for large lists

Uses length compare to determine if the list is "large" (currently
meaning 10 or more elements). If so, it reverses the list and does a
a fold left with the flip of the supplied function. For small lists it
uses the default foldRight implementation.

The code was written by @paulp. I'm just packaging it up and adding
some tests.