SI-8240 Consider rolling back optimizations for List

Some compiler-specific optimizations turn out to be very helpful for Lists in general.

  * List map can be a lot faster (up to 5x!)
  * List collect can be considerably faster (up to 3x)
  * List flatMap can be a bit faster (2x)
  * List take can be slightly faster (1.1x) and have better structural sharing

These appear to be unqualified wins (tested), even in a scenario with mixed collections.  This is expected: detecting the builder is faster than the otherwise mandatory object creation, and multiple dispatch is mostly a wash since it was already multiple dispatch in getting to the builder.

Wrote specialized collection methods to prevent returning modified objects without a memory barrier.  Testing shows less than 10% performance penalty except on take, where it still is a win over the old method.