view: remove_source_buffer() function

And call it in dispose().

The g_signal_connect_object() calls are replaced by simple
g_signal_connect(), since the signal handlers are disconnected by
remove_source_buffer().
view: disconnect notify::buffer in dispose()