Renders the date into a string. Format is "HH:mm:ss,fff".
Uses the FormatDateWithoutMillis method to generate the time string up to the seconds and then appends the current milliseconds. The results from FormatDateWithoutMillis are cached and FormatDateWithoutMillis is called at most once per second.
Sub classes should override FormatDateWithoutMillis rather than FormatDate.