Add search_contacts/search_contacts_page to SearchEngine, mirroring the
existing message and event search queries and their keyset pagination.
The contacts_fts virtual table and its insert/update/delete triggers
already existed but were unused; new tests prove the triggers keep the
index in sync across insert, update, and delete, that ranked hits
correctly include/exclude matches, and that sanitized/edge queries do
not error.
Refs #318