Add a ChatMemoryInterface for storing ChatBot chat history
## Problem/Motivation
ChatBots need a way to store chat history. Today there is no standardized mechanism for a ChatBot to persist conversation history across requests.
We want each ChatBot to be **in charge of its own memory handling**:
- A ChatBot may opt in to a server-side memory backend by setting up a `ChatMemoryInterface` implementation.
- A ChatBot may instead handle history entirely on the frontend (e.g. browser `localStorage`) and skip the interface altogether.
The decision — whether to use a `ChatMemoryInterface` at all, and which implementation — belongs to the ChatBot.
## Proposed resolution
- Add a `ChatMemoryInterface` in the AI module (`project/ai`) for now.
- Allow a ChatBot to optionally configure a ChatMemory implementation to persist chat history server-side.
- Keep storing history the ChatBot's responsibility: using the interface is optional, and a ChatBot can store history in the frontend instead.
- Likely provide a plugin manager / attribute so implementations can be discovered, consistent with the ChatProcessor plugin system (#3492940).
## Remaining tasks
- Define the interface methods (e.g. load / save / append / clear history, thread handling).
- Decide on plugin discovery (attribute + plugin manager) vs. a plain service/interface.
- Document how a ChatBot opts in to a server-side ChatMemory implementation, or handles memory on the frontend.
## Related
- #3492940 (Add ChatProcessor)
- #3585075 (Add AI Assistant API ChatProcessor plugin)
- #3585077 (Integrate ChatProcessor plugin system into AI Chatbot DeepChat block)
issue