If a forward/backward offset is too big, we'll clamp to the edges of
the file rather than failing completely. We return the number of
bytes moved so callers can still validate, but the stream API can now
deal with these situations a bit more effectively.
Because of the not_inlined trick, a 0 initialised SBO vector is
completely valid to use if required. Future /vec_ensure/'s will deal
with it appropriately. So there's no need to initialise the vector
ahead of time like this.