all: support openai-compatible models

The support is rather minimal at this point:
Only hard-coded models, only -unsafe, only -skabandaddr="".

The "shared" LLM package is strongly Claude-flavored.

We can fix all of this and more over time, if we are inspired to.
(Maybe we'll switch to https://github.com/maruel/genai?)

The goal for now is to get the rough structure in place.
I've rebased and rebuilt this more times than I care to remember.
diff --git a/claudetool/patch.go b/claudetool/patch.go
index 9254319..0886e66 100644
--- a/claudetool/patch.go
+++ b/claudetool/patch.go
@@ -13,16 +13,16 @@
 	"path/filepath"
 	"strings"
 
-	"sketch.dev/ant"
 	"sketch.dev/claudetool/editbuf"
 	"sketch.dev/claudetool/patchkit"
+	"sketch.dev/llm"
 )
 
 // Patch is a tool for precise text modifications in files.
-var Patch = &ant.Tool{
+var Patch = &llm.Tool{
 	Name:        PatchName,
 	Description: strings.TrimSpace(PatchDescription),
-	InputSchema: ant.MustSchema(PatchInputSchema),
+	InputSchema: llm.MustSchema(PatchInputSchema),
 	Run:         PatchRun,
 }