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.
`map_inplace()` isn't really the right tool for mutating a vector without any type changes. This invocation would normally be written as

```rust
for i in v.mut_iter() { *i += 3; }
```

You'd be better off coming up with a different example (perhaps something that converts from `uint` to `int` for some reason?)