[xen] Add a mutex around netif write,writev

We need this to avoid one packet write calling notify() while a parallel
writev has only written some of the fragments onto the ring.

This fixes the phenomenon where a packet fragments (eg containing HTTP
headers) end up being transmitted as whole frames. It also removes the
curious duplicates experienced during a ping flood.

Note this needs some new APIs in shared-memory-ring.