Store NSDateFormatters in thread-attached storage to avoid wasteful + ex...

...pensive recreation of these objects.

In my experience, it can be very costly to instantiate `NSDateFormatter` objects and there is no need since they are almost-always (like here) created using constant input parameters. We use thread-attached storage here because the formatter objects are documented as being *non* thread-safe, thus the best we can do is once instance per thread.