Sessions use granular locking now.

Separate one session mutex into connection ptr mutex and a synchronized
channel map. This allows upstreams to send their messages simultaneously
with session object spawning new channels.