Support simultaneous sessions

This fixes 2 related bugs:

* If a connection is never closed, the session is never written to the cassette and the cassette is never saved
* The order connections are open was not correct in playback unless they were closed in that same order.

Now the sessions are added when the socket is opened, guaranteeing the correct order and the cassette is written when the `use_cassette` block exits.