Implement FallbackSignalStrategy.
This allows a preferred signal strategy (currently always XMPP) to be used
speculatively, falling back on a back-up strategy (currently always WCS) if
that fails or times out. There is also a logging hook that will allow us to
log which strategy is in use, as well as corner cases such as the preferred
strategy succeeding after the time-out has expired (which would imply that
the time-out is too short). The actual logging will be a follow-up CL.
BUG=432171
Review URL: https://codereview.chromium.org/
815943004
Cr-Commit-Position: refs/heads/master@{#311567}