Add ipv6 support (DO NOT MERGE YET)

See mirage/mirage-tcpip#70 and mirage/mirage#319.  I did just enough to be able to run the cohttp examples over ipv6.

Right now you are forced to listen for connections over both IPv4 and IPv6 together (see function `serve`).  We can fix this by making the type of `mode` have variants `TCPv4 of int` and `TCPv6 of int`.