DateTime fields with DateTime.Kind == "Unspecified" are incorrectly interpreted as "local time" before converting to timestamp

When we use a field of type DateTime where the kind is Unspecified, the value written is not the same as the value read back out. The problem is that when converting DateTime to DateTimeOffset, the default constructor of DateTimeOffset states that the DateTime.Kind of Unspecified will be treated as local time zone. Then when converting to a Timestamp, the ticks for EPOCH are subtracted from the ticks of the DateTimeOffset. When reading back out, the DateTime will be shifted by whatever timezone the server is in.

This patch forces "Unspecified" date times to be considered as UTC so that the value read back out matches the value put in.