Alter the GCM API

I'm probably the only user, but this api is really wonky.  I need to
stop and consider the design a bit.  This is getting pushed to hackage
partly to ease the work-flow tomorrow but it might not last long.