Add non-blocking task execution to the MCP server so long-running
grounding tasks no longer trip client tool-call timeouts.
- execute_task now defaults to wait=False: it registers a background
task, returns a task_id immediately, and streams per-step progress
(engine warmup, skill registration, cloud search, each iteration,
final aggregation) into an in-memory task registry.
- New get_task_status(task_id, include_logs) tool polls the registry
for status / percent / current_step / logs / result / error.
- wait=True keeps the old blocking behaviour for CLI/sync callers.
- Add an asynccontextmanager lifespan that pre-warms the OpenSpace
engine in the background at server start, so the first real task
starts from an already-initialized engine instead of hanging on a
cold init after the MCP handshake.
In-memory task registry is pruned to a bounded size; progress updates
are appended as timestamped log entries (capped per task).