So in the two services I know about, Google returns an `expires_at` value in the raw return data when getting an access token.  I'm not sure if MS does with SkyDrive.  If Google's format is pretty standard, we could use that.

I would strongly suggest against refreshing on every request, since that adds a lot of overhead for every request.  And yeah, I was thinking the attribute would be on the session.  (But the callback would be on the service wrapper?)