We were previously using array_slice to get the storage
that we were copying the new elements into, using the current
length as the offset: `copy(data[len:], ..elems)`
However, array_slice returns a slice over `data[0:len]` -- we
were using it as if it was `data[0:cap]`.
Add array_cap_slice that does this instead. :^)