func NewStream(in io.Reader, out io.Writer) Stream {
	return &plainStream{
		in:  json.NewDecoder(in),
		out: out,
	}
}
NewStream returns a Stream built on top of an io.Reader and io.Writer
The messages are sent with no wrapping, and rely on json decode consistency
to determine message boundaries.
package jsonrpc2
import (
	"bufio"
	"context"
	"encoding/json"
	"fmt"
	"io"
	"strconv"
	"strings"
	"sync"
)
type Stream interface {
	Read(context.Context) ([]byte, int64, error)
	Write(context.Context, []byte) (int64, error)
}