func SliceNewAt(sl interface{}, idx int) {
	sltyp := SliceElType(sl)
	slptr := sltyp.Kind() == reflect.Ptr
	svl := reflect.ValueOf(sl)
	svnp := NonPtrValue(svl)
	nval := reflect.New(NonPtrType(sltyp))  
	if !slptr {
		nval = nval.Elem()  
	}
	sz := svnp.Len()
	svnp = reflect.Append(svnp, nval)
	if idx >= 0 && idx < sz {
		reflect.Copy(svnp.Slice(idx+1, sz+1), svnp.Slice(idx, sz))
		svnp.Index(idx).Set(nval)
	}
	svl.Elem().Set(svnp)
}
SliceNewAt inserts a new blank element at given index in the slice -- -1
means the end
package kit
import (
	"fmt"
	"log"
	"reflect"
	"sort"
	"strings"
	"time"
	"github.com/goki/ki/floats"
	"github.com/goki/ki/ints"
)
func SliceElType(sl interface{}) reflect.Type {
	return NonPtrValue(OnePtrUnderlyingValue(reflect.ValueOf(sl))).Type().Elem()
}