Make Client state collection fallible
While in the general case, missing protocol should be skipped, and not fail, there are cases where protocol should be there but for some reason is not. For such cases, the test should determine early that it doesn't have what it needs in order to proceed instead of some later unwrap() error.
Additionally, protocol version requirements are inserted here so future tests can be more explicit about their needs.