Defer version check until after bootstrap succeeds
Separated from #1411 . This PR moves version checking from __init__ into _bootstrap . This means that if a cluster is down and bootstrapping fails, version checking will not cause an exception to be raised immediately. Instead, we wait until the initial bootstrap succeeds and then run version checks. In order to handle this I've changed the "unset" version from None to (0, 0). This also allows us to simplify version checking code internally. (0, 0) should cause us to use the lowest available version (likely 0.8.2) if needed but still flag that version checking has not yet happened.
I like this PR's goal of creating a stronger separation btween the "liveness" check from the "which version" check.
What's needed to push this across the line?
Going to leave this out of 1.4.X patch release as it seems like a largish change. Will land for next release.
Did this land in 2.0?