fix: #3625486 Search strings are output unescaped on the Zeitgeist report page Security: - Escape search strings in the multicolumn report. - Filter the block separators with filter_xss_admin(). - Truncate recorded searches to the column lengths: longer ones failed with a 500. Blocks: - Apply the validation setting in the top searches block too. - Escape the latest block's labels once, and emit rel="nofollow" at all. - Leave block caching to Zeitgeist, per role, and skip it at 0 minutes. Install and settings: - Drop the file-level xautoload() calls, and keep .install free of module classes. - Remove every variable on uninstall; fix update 7001's cache bin. - Allow saving 0-minute cache durations; stop rebuilding module data on the settings form. Reports and Views: - Link Views report searches through a field handler instead of a path rewrite. - Scope the contextual link to the zeitgeist view; require access site reports. - Survive a missing dblog report and non-numeric day counts. - Start quarter spans on the right month. Also: - Stop rewriting a variable on every search. - Store the search path from the search page, like the search block. - Fix PHP 8.1 and 8.2 deprecations. - Updates 7002 (no core block cache) and 7003 (notice about [#3625488]). - Refresh docs, headers and links. By: fgm