Some cleanup around the way note store objects are created and auth.
Current behavior is:
- Note store clients don't know how to automatically reauth, but subclasses (the new ENLinkedNoteStoreClient) can know how to
  ask for their auth token from a delegate, in this case the session.
- Auth tokens for shared notebooks are cached and refreshed if expired before use, but there's no automatic handling of forced
  expiration/invalidation.
- No automatic refreshing of auth tokens for personal or business store clients.
- Each client gets its own queue. In practice, the user store, primary note store and biz note store will each have a queue, which
  makes sense, and each shared notebook will get its own, which is sort of OK, but only until you start assuming that most users
  with multiple shared notebooks probably have those shares from the same person/people, so will be on the same shard(s), meaning
  you're not really respecting the one-request-at-a-time-per-shard convention. These queues could possibly be pooled.
Guess at expiration computation was wrong, obviously. Use the same logic core clients use for refresh of tokens.