concurrency redesign: List<Message> is paired with a unique lock
concurrency redesign: List<Message> is paired with a unique lock

ie: for every duplex with a remote host, there is:
- a linear history with that remote history
- a mutex around said 1:1 history

some other/resulting changes in this CL:
- only grab GLOBAL history store's lock when *fetching* one of these 1:1
  chat-histories
-- pass around said linear history tupled with its own lock (ie: consumers need
   to be careful how they handle these, themselves)
- [micro.opt] fail slightly faster in our `flush` thread

also, acts on new event-based API (e91b9644423) to notify clients during said
flush thread

jzacsh/netwtcpip-cmp405,jzacsh/netwtcpip-cmp405,jzacsh/netwtcpip-cmp405,jzacsh/netwtcpip-cmp405