Fix serialization of DateTime struct for MS compatibility

Microsoft uses the UInt64 for the serialized dateData field.
Microsoft also uses Convert.ToUInt64 to convert the serialized
value to UInt64, which results in an overflow exception when
deserializing a DateTime serialized by mono.

Suggested change may break compatibility with previous versions
of mono, but should work with the Microsoft implementation.