Handle ** types properly in coerce2gtk
Fix to pngviewer for GTK 3
Add asX methods for all classes to all classes
Use single .as method with methods for all classes

Rather than adding a .as_x method for every class x to every other
class, add a single .as method returning an object with a method for
each class to keep the number of methods manageable.