SI-9043 ArrayBuffer.insert and insertAll are very slow

insert and insertAll were slower than their java equivalents by factors
of 5 and 10 respectively.

Benchmark code was provided here:
https://gist.github.com/rklaehn/3e9290118fcf63d1feae

We are using a toList to the source Traversable
Then doing a length and a copy on that collection.

By using an array, we can make use of faster methods.
Managed to get the ratios down to 2 and 1.5 respectively.

In addition to this, I think we should consider breaking insert into 2
separate methods, one for a single item and one for a collection.  The
varags version is very expensive when a single item is being inserted.

@phaller @axel22
I guess `toArray` was called here because that's what `ArrayList` does:

http://www.docjar.com/html/api/java/util/ArrayList.java.html

As @rklaehn suggested, there should not be any intermediate conversion to an array, as this is the costly part. Instead, `seq` should be traversed via iterator (or `foreach`) and its elements placed into the array one-by-one.
To improve this further, if in a specific case `seq` is backed by an array, like in the case of an `ArrayBuffer`, `WrappedArray` or `ArrayOps`, then `Array.copy` can be used directly on its internal array. I think it's worth checking out how doable this is.

Since you already have the original benchmarks, it would be easy to see what the performance impact of using `toArray` vs `toList` vs `iterator` vs `foreach` is.