Package websearch hosts the web search provider abstraction used by the
engine's WebSearchTool node. The Provider interface is the contract; one
concrete implementation per supported engine lives alongside it.
New returns a configured Provider for the given engine name. An empty
apiKey is rejected for engines that require one. Unknown names produce
an error so misconfiguration surfaces early.