throw away os._Error.
make some error types in a few packages

R=r
DELTA=110  (25 added, 46 deleted, 39 changed)
OCL=28382
CL=28561
diff --git a/src/lib/io/io.go b/src/lib/io/io.go
index bb63810..b283593 100644
--- a/src/lib/io/io.go
+++ b/src/lib/io/io.go
@@ -14,7 +14,10 @@
 )
 
 // ErrEOF is the error returned by FullRead and Copyn when they encounter EOF.
-var ErrEOF = os.NewError("EOF")
+type Error struct {
+	os.ErrorString
+}
+var ErrEOF os.Error = &Error{"EOF"}
 
 // Reader is the interface that wraps the basic Read method.
 type Reader interface {