Avoid dates in the middle of a text block.

Dates were appended in the middle of a text block if the buffer was flushed before a \n character was reached. A private member m_linestart has been added that tracks whether the buffer is actually at a line start or the middle of a text block. Dates are only set at the beginning of the buffer is the buffer is at a line start.
Improve optimization logging.
Improve output in print() methods.