Add a `flush` function to the `IO` module type and implement in Lwt/Async/Mirage.

Closes #52