Every fiber which wants to work with the database needs to have a session.

Every fiber which may work with box needs to have a session,
since it's stores user id and the current transaction.
A pre-requisite patch for multi-statement transactions.

Refactor statement transaction lifecycle. Avoid nested
statement transactions. Make sure there is no more than 1
statement transaction present in the system at the moment.

Resolve the bugs this revealed:
- in local hot standby we would parasite on the main or
script fiber session to process requests. When an assert
was added that there is no more than 1 transaction active
at a given moment in time, it turned out that transactions
running on behalf of local hot standby were running in
the scope of session of the run_script or sched fibers.

Create and use an own session there.

- refactor session on_connect/on_disconnect trigger
invocation: do not invoke these triggers for just any session,
only for real connects/disconnects (iproto, admin).

- split session creation/destruction and trigger invocation
Conclude that session storage implementation needs to be
done differently.
Fix compilation in debug mode