func (link *Link) NewLinkReader(r io.Reader) (s *LinkReader) {
	s = &LinkReader{r: r, link: link}
	return
}
NewLinkReader returns a LinkReader that returns bytes from r,
simulating that they arrived from a shared link.
package linkio
import (
	"io"
	"time"
)
type Throughput int64
const (
	BitPerSecond      Throughput = 1
	BytePerSecond                = 8 * BitPerSecond
	KilobitPerSecond             = 1024 * BitPerSecond
	KilobytePerSecond            = 1024 * BytePerSecond
	MegabitPerSecond             = 1024 * KilobitPerSecond
	MegabytePerSecond            = 1024 * KilobytePerSecond
	GigabitPerSecond             = 1024 * MegabitPerSecond
	GigabytePerSecond            = 1024 * MegabytePerSecond
)
type LinkReader struct {
	r    io.Reader
	link *Link
}
type LinkWriter struct {
	w    io.Writer
	link *Link
}
type Link struct {
	in    chan linkRequest
	out   chan linkRequest
	speed int64  
}
type linkRequest struct {
	bytes int
	done  chan bool
}