TimeZone.GetUtcOffset daylight savings improvements

When daylight savings ends, the delta (hour usually) that clocks jump backwards is repeated twice.  So for example at 3am clocks jump back to 2am.

This creates an ambiguous time offset from utc where between 2am-3am clocks could be either UTC + X or UTC + X+DST.   TimeZone.GetUtcOffset resolves this by assuming the standard offset is in affect.

This patch update TImeZone to match the behaviour of Microsofts .NET implementation.