func (b *builder) Write(d []byte) (int, error) {
	b.buf = append(b.buf, d...)
	return len(d), nil
}
Write appends a slice. It never returns an error, but implements io.Writer
package esio
type builder struct {
	buf []byte
}
func (b *builder) Bytes() []byte {
	return b.buf
}
func (b *builder) Grow(n int) []byte {
	pos := len(b.buf)
	b.buf = append(b.buf, make([]byte, n)...)
	return b.buf[pos:]
}
func (b *builder) WriteByte(v byte) error {
	b.buf = append(b.buf, v)
	return nil
}
func (b *builder) WriteU16(v uint16) {
	b.buf = append(b.buf, uint8(v>>8), uint8(v))
}
func (b *builder) WriteU24(v uint32) {
	b.buf = append(b.buf, uint8(v>>16), uint8(v>>8), uint8(v))
}
func (b *builder) WriteU32(v uint32) {
	b.buf = append(b.buf, uint8(v>>24), uint8(v>>16), uint8(v>>8), uint8(v))
}
func (b *builder) WriteU64(v uint64) {
	b.buf = append(b.buf,
		uint8(v>>56),
		uint8(v>>48),
		uint8(v>>40),
		uint8(v>>32),
		uint8(v>>24),
		uint8(v>>16),
		uint8(v>>8),
		uint8(v),
	)
}