func (c *Canvas2d) Create(width int, height int) {
	canvas := c.doc.Call("createElement", "canvas")
	canvas.Set("height", height)
	canvas.Set("width", width)
	c.body.Call("appendChild", canvas)
	c.Set(canvas, width, height)
}
Create a new Canvas in the DOM, and append it to the Body.
This also calls Set to create relevant shadow Buffer etc
TODO suspect this needs to be fleshed out with more options
package canvas
import (
	"image"
	"syscall/js"
	"github.com/golang/freetype/truetype"
	"github.com/llgcode/draw2d"
	"github.com/llgcode/draw2d/draw2dimg"
)
type RenderFunc func(gc *draw2dimg.GraphicContext) bool
type Canvas2d struct {
	done chan struct{}  
	window js.Value
	doc    js.Value
	body   js.Value
	canvas  js.Value
	ctx     js.Value
	imgData js.Value
	width   int
	height  int
	gctx     *draw2dimg.GraphicContext  
	image    *image.RGBA                
	font     *truetype.Font
	fontData draw2d.FontData
	reqID    js.Value  
	timeStep float64   
	copybuff js.Value
}
func NewCanvas2d(create bool) (*Canvas2d, error) {
	var c Canvas2d
	c.window = js.Global()
	c.doc = c.window.Get("document")
	c.body = c.doc.Get("body")
	if create {
		c.Create(int(c.window.Get("innerWidth").Int()), int(c.window.Get("innerHeight").Int()))
	}
	return &c, nil
}