Avoid overriding completion table when reading buffers
This fixes Bug#53604, and allows 'read-buffer-function' to check if it
is being called by 'read-buffer-to-switch', and react accordingly, for
example immediately by showing the *Completions* buffer.
* lisp/window.el (read-buffer-to-switch-current-buffer): New var.
(read-buffer-to-switch): Use it.
* lisp/minibuffer.el (buffers-except-current-if-switching): New fun.
* src/minibuf.c (Fread_buffer): Use it.