Add a test for [NSDate iso8601String_local_23].
Add LogFormatterTests, comparePerformance and comparePerformanceAndLogResult.

This has correctness and performance tests for LogFormatter.
The performance test currently doesn't do anything (just compares two
identical paths) but that's about to change.
Put the log level in the snprintf call.

This is 10% faster than having the stringWithFormat call do it.

At the same time, add a translation for LOG_LEVEL_FATAL (though
we don't actually use that today) and fix the LOG_LEVEL_USER translation
so that it's the same width as all the others.
Use a char for the log level indicator, rather than an NSString.

This has no appreciable performance difference on its own, but
it makes the next cset possible.
Use localtime_r and snprintf to format the timestamp on LogFormatterTTY
rather than NSDateFormatter.

This is 26-28% faster.

This changes the output so that it uses the 24 hour clock even in the
US locale, but that's fine.
Remove the NSDateFormatter from LogFormatterTTY, since we're no
longer using that.
Remove the thread ID from the TTY logging.

formatLogMessage is 6-7% faster without it.
Change the formatting for the TTY logger to match the other logger
wrt the position of the line number and the pipe separator.
Tidy the LogFormatter tests.

NSDateFormatter is rounding up when rendering to the nearest msec,
but both LogFormatter* classes are truncating.  We can handle this
cleanly in the test by truncating the timestamp before we compare
the result.
Use sizeof rather than repeating the buffer size.

Shrink the buffer size in the TTY case.
Replace the iso8601String* implementations with ones based on
gmtime_r / localtime_r and snprintf.

These are 10x faster than using NSDateFormatter.
Remove all the pieces related to the old NSDateFormatter-based implementations.
Remove dateTruncatedToMsec.

It's not needed now that iso8601String_24 / iso8601String_local_23's
implementations match the ones in formatLogMessage.