Logging api

Reviewers:  @bernerdschaefer, @peterbourgon 

First pass at the internals of the logging API.  This is two layers thick.  There is a RingBuffer for log messages, and on top of this is a data structure that implements storage for and operations for each container.  (The RingBuffer probably should have been a separate submit.)

The next piece to be worked on will be the HTTP logging interface.
You're overloading logSetMsg with 5 different behaviors, depending on its `action`. Would it be better to have 5 distinct types, one per action, and 5 distinct channels on which you can `select` in this loop?