Contextual retrieval and dual-query RAG

The retriever now uses contextual retrieval with same-URL dedup and a minimum similarity threshold, plus a dual-query approach that runs an escalation fallback for better recall. Chunks are section-aware, small fragments are merged, and boilerplate is stripped both by rules and AI.