Safe API around splitting a `Vec<T>` into initialized elements and reserved capacity

Published under split-spare should anyone be interested.