func (m ServeMux) Handle(path string, handler Handler) error {
	path = DefaultRPCPath + path
	if _, exist := m[path]; exist {
		return fmt.Errorf("webrpc: handler already registered for %q", path)
	}
	m[path] = handler
	return nil
}
Handle adds a new handler for an RPC.  This is used by the code generated
automatically by protoc-gen-go.
package webrpc
import (
	"bytes"
	"fmt"
	"io"
	"net/http"
	"net/url"
	"path"
)
const (
	DefaultRPCPath = "/_webRPC_"
)
type Protocol interface {
	String() string  
	Decode(io.Reader, interface{}) error
	Encode(io.Writer, interface{}) error
}
var protocols = map[string]Protocol{}
func RegisterProtocol(p Protocol) {
	protocols[p.String()] = p
}
type Handler func(*Call) error
type Call struct {
	http.ResponseWriter
	*http.Request
	ContentType string
}
func (c *Call) ReadRequest(pb interface{}) error {
	if proto, ok := protocols[c.ContentType]; ok {
		return proto.Decode(c.Request.Body, pb)
	}
	return fmt.Errorf("webrpc: read: %s: bad content type", c.ContentType)
}
func (c *Call) WriteResponse(pb interface{}) error {
	if proto, ok := protocols[c.ContentType]; ok {
		return proto.Encode(c.ResponseWriter, pb)
	}
	return fmt.Errorf("webrpc: write: %s: bad content type", c.ContentType)
}
type ServeMux map[string]Handler