Port Service and Session to GTask
GSimpleAsyncResult is deprecated in favor of the simpler GTask, so use that instead. This cuts down on the deprecation warnings.
I wanted to do both separately, but porting one without the other led to some faulty casts from GSimpleAsyncResult to GTask (and vice versa).