Accommodate large arrays in Array's swap method.

Swap now batches the underlying splice operations if necessary.
To reduce the pressure on the stack the observable splice is now based 
on swap. This will avoid doubling the stack used by nesting apply calls.