Feedback client timeout (fixes #15)

This adds a timeout to the feedback client so, if Apple never  closes the connection, we don't hang trying to get feedback. This covers #15 and depends on #18.

EDIT: I felt that this wouldn't be complete without state checking and appropriate notes in the docs about when `getExpiredTokens` may be called, so this also covers #3 as of cc9b69f.