New option SimpleErrorMessages that avoids allocation in the error path. It's off by default to preserve backwards compatibility.
Added benchmark BenchmarkBigParseAnyErrors that takes the big set of test cases, and injects errors to make them fail at pseudo-random places.
This optimization speeds up the error path runtime by 4x and reduces error path allocation bytes by 13x!
Optimize the common and special case where mm and dd are the same length, just swap in place. Avoids having to reparse the entire string.
For this case, it's about 30% faster and reduces allocations by about 15%.
This format is especially common, hence the reason to optimize for this case.
Also fix the case for ambiguous date/time in the mm:dd:yyyy format.