steam-api: gracefully handle expired logon sessions

When a logon session expires, attempt to relogon in the background, and
error only if the relogon fails.

This is somewhat of a rough implementation as refreshing the states of
each buddy and may be needed.  Additionally, there is the rare case that
a friend could be removed or added while a relogin is taking place.