Fix leaking blpapi::Session.

The underlying `blpapi::Session` can not be deleted from within a
message dispatch, so instead indicate that `destroy()` was called
and delete the `Session` outside of the processing loop, taking
care to destruct the `MessageIterator` and drain the queue of any
`Event` objects first, as they require the `Session` to exist.