Google Calendar

Work in progress for a google calendar node. Several starting points for discussion:

* ~~I've missed something in search/replacing the flickr code so the 'displayName` doesn't seem to be used correctly. I can't see why.~~ Fixed. Thanks to @hbeeken for spotting my mistake.
* At the moment, the google config node requests profile and calendar scope. This is fine for now. In future, I think the GoogleNode should request profile scope and the calendar node should request the calendar scope. And later other nodes can incrementally increase the scope. Google supports this kind of incremental approach. Or maybe the google node just requests the scopes from the nodes that use it - is there a way to find this out from the config node? - and re-authorizes with the complete new set.
* The refresh process - it is not trivial but I think I've got it working reliably.
* There should be a way to re-authenticate - in case of errors with the refresh process.

Comments/thoughts welcome.