Renamed and reworked the copying constructors.

The names before were misleading, and the docs were wrong w.r.t. copying
semantics. This patch fixes those errors, and also keeps the API in line
with rust conventions. It now takes slices as parameters in all cases,
and also lets us drop our libcollections dependency except in the case of
`BufSpan`.