Don't free vectors in their dtor

Merge/rebase error from DST. Thanks to @eddyb for finding.

Closes #16826 (I hope)

r?
It looks like prior to your merge, the `if` statement actually covered the `len` and `dataptr` vars too. I don't know if that really matters.

```rust
    if ty::type_needs_drop(tcx, unit_ty) {
        let fill = get_fill(bcx, vptr);
        let dataptr = get_dataptr(bcx, vptr);
        iter_vec_raw(bcx, dataptr, unit_ty, fill, glue::drop_ty)
    } else { bcx }
```