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" worked okay for 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>
Wip

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