Construct and replay singleton sessions

These changes add all the session-related messages to the protocol and sends them when appropriate. The backend constructs a new CaptureSession when capture starts and closes it when capture ends, adding the single captured recording to the session. The frontend just ignores all session-related messages.

There's some simple (currently untested) logic to iterate over multiple recordings in a session, but this will have to change to correctly replay page navigations once they are split across recordings (as it is, there would be a navigation to about:blank in between).