Vec::grow should use reserve_additional, Vec::reserve should check against capacity

Two minor tweaks to how `Vec::grow` and `Vec::reserve` works. The first changes `grow` to use `reserve_additional`, which will assert against overflows. The second changes a conditional check in `reserve` to only grow if we need the extra capacity.