extract AuthTokenFile domain object

This refactor centralizes the logic around reading/writing the authentication token file.

It is primarily intended to clean up the code in preparation for XDG standard directory support
Yep, thanks. I forgot to add "not ready to merge" to the PR description