Cache all non-standard date format instances lazily.

So, this isn't the best thing in the world. Especially because we are working around an older Android platform. I tried playing with only keeping the thread locals and SDFs when they were matched in a linear fashion or LRU but it all seemed far too much infrastructure for something that should hopefully never be used. Another option would be just keeping an array of the SDFs directly and synchronizing on each which would force invalid dates to potentially wait a bit.

Let me know what you think.

Closes #224.