{Udp,Tcp}_direct: fix generated code
IP: unify IPV4 and IPV6 around a single signature

Conflicts:
	types/V1.mli
UDP, TCP: Specialize over LWT/IPV{4,6}
Add CONFIGURABLE for IPV6

We use a phantom type variable to allow for polymorphism over IPV4/6.
Make UDP, TCP impl function of the IP impl
Make CHANNEL impl a function of the TCP impl
Revert the changes to STACKV4

Conflicts:
	lib/mirage.ml
Add `input_arpv4` to IPV4 signature