Add a helper for time conversion and remove some functions which do not
make sense on Windows - users are not identified by integral IDs but
rather by SIDs. This helps reduce the error diagnostics when building
FoundationEssentials on Windows.
Implement querying the current absolute time on Windows which was
previously marked as unimplemented. Use the
`GetSystemTimePreciseAsFileTime` to query the system time which is in
100-ns intervals since January 1, 1601 (UTC). This partially enables
the `Date` functionality on Windows.
MSVCRT does not provide `gmtime_r`. `gmtime` is re-entrant safe, but
uses TLS storage. Prefer to use `_gmtime64_s` which provides the
re-entrancy with local buffers but swaps parameter orders. Prefer to
use the 64-bit time variant over the 32-bit `time_t`.
* Fixes issue #78: Calling Date.description might result in undefined behaviour
The buffer used was too small in some cases.
Fixed by allocating (more than) enough space on the stack.
* Fixed indentation.
* Removed explicit return type.
* Added tests and added workarounds for glibc non-standard behaviour.
Also limited description to show dates in the range .distantPast to
.distandFuture since values way outside that range sometimes result in
incorrect results.