Expiration for signed global ids.

Adds #27.

At the moment this is for some discussion with some code.

I've taken the approach of only storing `expires_at` and converting from that when accessing `expires_in`.

I have some trouble condensing just how `expires_in`  and `expires_at` work together, and on top of that, they should work on both the instance and class level... :grin:

For instance with this set up turning off `expires_in` (by passing `nil`) at the instance level wouldn't work, because it would use the class level `expires_in`.

Basically I just want to know if I'm headed somewhere :smile:
This should probably be a specific error. Perhaps should share a super class with the "invalid signature" case even. @xuchu @rafaelfranca @jeremy thoughts? (we need to decide that for our side too)