Merge my code from the zmq web chat interface for code reuse

Specifically, this is so ChatDB can be reused in normal server code too - it's exactly the same, and InterServerImpl is pretty similar too. (only `clientInitChat`, `clientAddChatParticipant`, `clientRemoveChatParticipant` and `clientAppendMessageToChat` are different)