Add ClockType enum to core.time for issue# 13433.

This adds an enum for indicating which type of clock to use when it's
appropriate for a time function to have multiple options for the source
clock. Currently, it only supports "normal" and "coarse," but we may add
more in the future, since some systems do support others (e.g
clock_gettime has several other options depending on the system).

This is in support of https://github.com/D-Programming-Language/phobos/pull/2584.
What types of potential failures do you foresee? It's basically making sure that the values coming from the clocks are essentially the same. It would be very bad for instance if the coarse clock returned a completely different value than the the normal clock, because then when you compare the `MonoTime`s, you'd be comparing completely unrelated values. The coarse clock should just be updating less frequently and if the a coarse time and a normal time are close enough together, then it may look like the coarse one went backwards, but we don't want something like the coarse clock having 1000 and the normal one having 5000000 for approximately the same time - though maybe the solution to that is to add the clock type to `MonoTime` internally and throw an `Error` if `MonoTime`s with different clock types are compared... Then it would be possible to use totally different clocks for different `MonoTime`s without it being caught. It's possibilities for weirdness with that that made it so that I didn't add any `ClockType`s for stuff like Linux's `CLOCK_MONOTONIC_RAW` or `CLOCK_BOOTTIME`, but if `MonoTime` has the clock type, that problem goes away. I'll have to consider that then.

Regardless, it looks like I missed the `assert(coarse1 <= coarse2);`, so I'll need to fix that.