The first version of with-relative-file left a new buffer around, unless
the file was already open, in which case the existing buffer would be
changed. It was all very stateful and this was not very fixable. This
version uses with-temp-buffer instead, so leaves Emacs as it found it.
This does remove the ability to save to the file from within this
buffer.