Override `.slice` in ArrayOps to use arraycopy.
Override `.slice` in ArrayOps to use arraycopy.

This makes it ~10x faster when copying large chunks arround.
My benchmark:

def bm(duration: Long)(f: => Unit): Int = {
val end = System.currentTimeMillis + duration
var count = 0
while(System.currentTimeMillis < end) {
f
count += 1
}
count
}

def measure(seconds: Int)(f: => Unit) = (1 to seconds).map { _ => bm(1000)(f) }.sum / seconds

val array = scala.util.Random.alphanumeric.take(1000).toArray

measure(20) { array.slice(100, 500) }
// ~5 million
measure(20) { scala.collection.WrappedArray(array).slice(100, 500) }
// ~300K

martijnhoekstra/scala,shimib/scala,felixmulder/scala,scala/scala,felixmulder/scala,felixmulder/scala,shimib/scala,scala/scala,felixmulder/scala,shimib/scala,slothspot/scala,jvican/scala,jvican/scala,slothspot/scala,lrytz/scala,martijnhoekstra/scala,scala/scala,slothspot/scala,jvican/scala,martijnhoekstra/scala,martijnhoekstra/scala,scala/scala,felixmulder/scala,slothspot/scala,jvican/scala,lrytz/scala,scala/scala,shimib/scala,shimib/scala,lrytz/scala,slothspot/scala,felixmulder/scala,martijnhoekstra/scala,jvican/scala,jvican/scala,jvican/scala,felixmulder/scala,scala/scala,shimib/scala,martijnhoekstra/scala,lrytz/scala,slothspot/scala,lrytz/scala,lrytz/scala,slothspot/scala