It's a generalized DeviceFlowHelper, able to operate on all flows.
It's also more flexible, as it will automatically refresh token as
required. That way, it lends itself to use in libraries which
want minimal hassle.
Additionally, the Authenticator interface was scetched out.
It will replace the DeviceFlowHelper, and become the universal
do-it-all tool, as it supports storage as well.
... in case there is a connection error.
Its purpose is to handle the device flow, not to retry if there are
more general problems, like connection errors. However, the user
may implement this differently in his delegate.