Return a GError when launching external programs

Consistently return a GError when reporting failures to launch external
applications, and allow the calling code to show the error to the user
as necessary.