Implement FLOW.disconnect as well as FLOW.close
Implement FLOW.disconnect as well as FLOW.close

Conveniently since there's no acknowledgement step in the vchan
protocol, the `close` and `disconnect` operations are identical.

This patch adds a `mutable closed: bool` to the connection to avoid
calling the `close`/`disconnect` machinery twice since unmapping
a grant reference a second time may actually unmap someone else's
grant reference.

Signed-off-by: David Scott <bfcdf3e6ca6cef45543bfbb57509c92aec9a39fb@recoil.org>

samoht/ocaml-vchan,djs55/ocaml-vchan,mirage/ocaml-vchan,djs55/ocaml-vchan,mirage/ocaml-vchan,djs55/ocaml-vchan,samoht/ocaml-vchan,mirage/ocaml-vchan,samoht/ocaml-vchan