GCE support

This is draft code, written by just looking at the API docs.

I suggest delaying acceptance until we can actually test it.