JSON is actually unfit to send structured log messages, because
date/time is not well supported. So we are using BSON, which supports
those. BSON is, among the dozen serializers available, really a random
choice and might be changed in the future.
also there is some refactoring on circologd: connection handling,
closing, etc. Not as much as needed, though: shutdown is still unclean,
and websocket clean shutdown is not tested
we introduced non-blocking writes; however, being non-blocking when the
goroutine has no buffer means that many messages will be considered
lost.
This commit change from "non blocking" to "max 500ms; first timeout
means stop it all"; it also put a little buffer on client messages.