Detect broken sessions

When a session is broken for whatever reason, make it possible for
a long running user of the library to reasonably recover by
having a broken Session object detect the situation and disqualify
itself from the mechanisms to reuse sessions.

Change-Id: Id63c3490d6bbeab7d5de7f92c1eae012a648c416