Restart conversation support.

The idea here is to let the user restart the conversation, possibly with
a better prompt. This is a common manual workflow, and I'd like to make
it easier.

I hand wrote the agent.go stuff, but Sketch wrote the rest.

Co-Authored-By: sketch <hello@sketch.dev>
diff --git a/loop/mocks.go b/loop/mocks.go
index 264c6bc..7e05070 100644
--- a/loop/mocks.go
+++ b/loop/mocks.go
@@ -192,6 +192,16 @@
 	return nil
 }
 
+func (m *MockConvo) GetID() string {
+	m.recordCall("GetID")
+	return "mock-conversation-id"
+}
+
+func (m *MockConvo) SubConvoWithHistory() *ant.Convo {
+	m.recordCall("SubConvoWithHistory")
+	return nil
+}
+
 func (m *MockConvo) ResetBudget(_ ant.Budget) {
 	m.recordCall("ResetBudget")
 }