gmain: Add GMainContextPusher convenience API

This is like `GMutexLocker`, in that if you are able to use
`g_autoptr()`, it makes popping a `GMainContext` off the thread-default
main context stack easier when exiting a function.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
10 jobs for main-context-pusher in 22 minutes and 26 seconds (queued for 1 second)
latest
Status Job ID Name Coverage
  Build
passed #350494
cross-android_api21_arm64

00:02:31

passed #350495
cross-android_api28_arm64

00:02:52

passed #350496
cross-mingw64

00:03:25

passed #350492
debian-stable-x86_64

00:06:24

passed #350491
fedora-x86_64

00:06:49

passed #350493
G_DISABLE_ASSERT

00:03:34

passed #350497
win32
msys2-mingw32

00:14:11

passed #350498
win32
vs2017-x64

00:09:24

 
  Coverage
passed #350499
coverage

00:02:04

77.9%
 
  Analysis
passed #350500
scan-build

00:06:10