sendmsg: kern_sendit(): create a local copy of user's iovec

kern_sendit() calls for sosend() which changes the contents of iovec
in its uio parameter (specifically as a result of uiomove() call).

Before this patch we just set uio->uio_iov to be mp->msg_iov which comes
from the application and applications assume msg_iov is not changed
(e.g. memcached).

As a result the application may get seriously confused. For example, memcached
will send corrupted responces when value size is greater than MTU, e.g. 5024B,
for 1500B MTU.

The easiest way to fix this is to create a local copy of iovec. We may consider
some more creative approach in a future.

Signed-off-by: Vlad Zolotarov <vladz@cloudius-systems.com>
Signed-off-by: Avi Kivity <avi@cloudius-systems.com>