Add support for in-place map for `Vec`s of types with same size

This is implemented using a new struct `PartialVec` which implements the proper
drop semantics in case the conversion is interrupted by an unwind.
Doc comment should have a section `# Failure` that documents the restriction that `T` and `U` must have the same size.