Feature: add generic lsp search provider
The implementation is copied from the rust-analyzer lsp search implementation.
I wasn't really sure what to do with the on_extension_removed_cb
, based on a couple of other relatively simple lsp implementations it didn't look like this one needed an unload method. And I think the cleanup is done automatically already when the search engine is destroyed, but I'm not 100% sure so I left the fixme in there.