Cairo surface creation / drawing / write to PNG functions

A subset of https://github.com/conformal/gotk3/pull/59 , with review comments taken into account (WriteToPNG now has an error return value)