CompletionContext: more robust code

Buffer changes are now handled correctly.
gtk_source_completion_context_get_iter() returns a gboolean to tell if
the iter was set.

Connecting to the mark-set signal is not needed, because the mark can be
set only in set_iter().
Completion: make the code more robust wrt contexts

Before calling a CompletionProvider function, be sure the context is
still valid. A CompletionProvider should also make the verification, but
since the verification was not possible before, old code can crash
without this commit.