use eq rather than match where possible
just call ->Unix instead of recursion into ->Set

we do this nearby for other formats
separate elsif branch for one SQL/ISO format

This format we use when fetch from DB. All fields in the string
are mandatory and it's treated as UTC time.

For this particular and very common case we can do
faster conversion to unix time. Other elsif branch
still handles more variants.

Our existing tests dictate that we normalize old dates
(negative unix time) to zero, as well as, invalid dates.
I think that we can avoid validation and use timegm_nocheck.
rather than map+array assign we can change inplace
drop a check, code below comes to the same result
catch expected warnings in test
Merge branch '4.2/date-pm-micro-optimizations'