net: test and fix support for 0-length datagram packets.

Fixes #274.

R=r
CC=jonathan.r.hudson
https://golang.org/cl/163072
diff --git a/src/pkg/net/fd.go b/src/pkg/net/fd.go
index e1592eb..733f957 100644
--- a/src/pkg/net/fd.go
+++ b/src/pkg/net/fd.go
@@ -386,6 +386,10 @@
 		}
 		break;
 	}
+	if fd.proto == syscall.SOCK_DGRAM && err == os.EOF {
+		// 0 in datagram protocol just means 0-length packet
+		err = nil
+	}
 	return;
 }
 
@@ -433,7 +437,9 @@
 	}
 	err = nil;
 	nn := 0;
-	for nn < len(p) {
+	first := true;	// force at least one Write, to send 0-length datagram packets
+	for nn < len(p) || first {
+		first = false;
 		n, err = fd.sysfile.Write(p[nn:]);
 		if n > 0 {
 			nn += n