refactor:
pull things from native/engine.go into a common gosui interface
to prepare for the js backend coming