func NewEditor(state interface{}, mutatePath string) Editor {
	return &editor{
		state:     state,
		mutateUrl: mutatePath,
	}
}
NewEditor creates a new editor instance wrapping the specified state.  If
state is a pointer, it can be mutated; if not a pointer, it can be viewed but
the UI will not offer mutation tools. The mutatePath parameter provides
the path to which requests to change the state are sent.
package structeditor
import (
	"net/http"
	"net/url"
)
type Editor interface {
	Render() (string, error)
	Mutate(path string, operator Operator) error
	OperatorFor(values url.Values) (Operator, error)
	ViewHandler(w http.ResponseWriter, r *http.Request)
	MutateHandler(w http.ResponseWriter, r *http.Request)
}
type editor struct {
	state     interface{}
	mutateUrl string
}