allocate sqlite3_module with C allocator to fix checkptr
go test -race . fails for me without this fix.
The sqlite3_module struct was allocated on the Go heap and passed to sqlite3_create_module_v2 as a uintptr. Later when we access fields through unsafe.Pointer arithmetic, Go's checkptr instrumentation rejects the dereference because the pointer was round-tripped through a uintptr in C-allocated memory.
Use libc.Xcalloc instead, matching the pattern in mutex.go and the VFS code.
The allocation is intentionally never freed; modules are registered once and must outlive every connection that references them. There is no UnregisterModule API.
This is a prerequisite change to another fix in the vtab code
which requires go test -race to reproduce.