When corfu--candidate was ended up as nil, the overlay still held
previous value but was not updated as the error was raised in
the update function.
Additionally when the backend is not keeping up we use
the previous candidate to update what the user see using
all of the information we had (i.e. prefix and the candidate),
so we borrow a character from one and append/prepend to the
other when necessary. This gives a little better experience
when using slow backend such as lsp.