Use monotonic time for events

This avoids possible problems when wall-clock time is adjusted. Also, it's needed on x86 because monotonic time and wall-clock time aren't the same.

I noticed this in the trace viewer; sleeps of < 100ms were taking exactly 100ms. The reason is that we asked to sleep for much too long, but the 100ms timer interrupt would wake us up anyway.

Will add change log entry when other PRs have been applied, or we'll just get conflicts.
I know this is contentious among OCaml programmers but in general I stick to uppercase polymorphic variants (I think it makes them easier to distinguish both in code and in error reports where they can be mixed with polymorphic variables which use the confusable `'`, note also that the language spec [mandates](http://caml.inria.fr/pub/docs/manual-ocaml/values.html#sec85) an uppercase letter). I don't know if there's a guideline for that in mirage but at least it should be kept consistent throughout the system.