Completion: support changing the view's buffer

The completion is attached to one view, but the view can change its
buffer. This was not supported. Now the notify::buffer signal is
connected.

We take a reference to the buffer.

We now disconnect, block and unblock the signal handlers by function,
not by id.