Reify various timeout behaviors

Also refactor the name "Duration" to shorter and more make-sense name
"Period".  This breaks the API.

This is a continuation of f5492b8632f0ce33e922975f25f9d8143c8f397b:
although setting timeout to be "nil" allowed bookkeeping necessary to
enable immediate log flushing (now expressed with the symbol
TimeTriggerImmediate), there was no obvious way to neatly handle the
other useful case, which is to never flush based on timeouts, rendered
now as TimeTriggerNever.

This adds some symbol bloat, but the overall intent seems spelled out
somewhat more clearly in the program text now, as well as gaining the
feature exposed by TimeTriggerNever.

Thanks to Go's notion of a zero-value, one can elide explicitly
setting the behavior and get the old, most likely useful one,
TimeTriggerPeriodic.

Signed-off-by: Daniel Farina <daniel@heroku.com>
Add micro-benchmarks

In addition to monitoring performance, these also provide some minimal
amount of smoke testing to see if things are halfway sane when dealing
with lots of log throughput and goroutines, as well as giving one a
sense of the logplexc-mostly overhead for processing a reasonably long
log message.

Signed-off-by: Daniel Farina <daniel@fdr.io>