tests: Fix source testing to handle critical with non-existing sources

Silence new critical coming from g_source_remove on non-existing sources.
This function still returns False, but we need to silence the new critical
so the test suite doesn't fail. See bug 710724.

https://bugzilla.gnome.org/show_bug.cgi?id=710978
Add consistent GLib.MainLoop SIGINT cleanup

Remove auto cleanup of SIGINT source handling by returning True from the
signal callback. This gives the __del__ method consistent cleanup semantics
regardless of whether or not a SIGINT occurred.

https://bugzilla.gnome.org/show_bug.cgi?id=710978
Fix toggleref safety problems by always enabling the GIL

Call PyEval_InitThreads for the base gi module import. This forces the
Python internals create the GIL and always support threading with the
various thread state enter/exit funcs. This is needed since we cannot
predict which GI repositories might accept Python callbacks and run them in
non-Python threads or trigger toggle ref notifications in a thread other
than main.

https://bugzilla.gnome.org/show_bug.cgi?id=709223