* Change SharedVector::as_mut_slice() to SharedVector::make_mut_slice()
* SharedPixelBuffer::as_mut_slice and SharedPixelBuffer::make_mut_slice()
* SharedPixelBuffer::as_bytes_mut() to SharedPixelBuffer::make_mut_bytes()
This is consistent with Rc::make_mut() and is supposed to emphasize
that, unlike the usual as_* operations, it is not a free operation but
may involve work (detaching the data by cloning it).
Amends commit 7384ebdc32
* In capacity_for_grow, don't compare the number of elements
(current_cap) with the size of an element in bytes, but
with the required capacity instead (to detect that we don't need
to grow). Not all call sites check for that (i.e. push), so there's
a new test for that.
* When re-allocating due to growth and copying elements from the old
inner to the new inner, make sure to copy all old elements from the beginning,
not only the last element repeatedly.
An empty vector is not a `SharedVectorInner<T>`, it is a `SharedVectorInner<()>`
And so it is UB to take a reference of a `SharedVectorInner<T>` for the empty vector