More robust detection of near-max array size.

I'm using Unsafe.arrayBaseOffset to indicate how many extra bytes
a byte[] will need. Integer.MAX_VALUE - that size should be the
maximum number of bytes such an array can hold without exceeding
32-bit maximum.
Shallow dup the incoming bytelist, since we only modify begin.