Stop hooks (and other hook types) were not firing because they were
missing the required "matcher" field. According to the hook development
documentation, all hooks must have a matcher field - "*" for wildcard
matching.
Changes:
- Add matcher: "*" to all hooks in hookify, ralph-wiggum,
explanatory-output-style, and learning-output-style plugins
- Update validate-hook-schema.sh to properly handle plugin format
(with 'hooks' wrapper) vs settings format (events at root)
- Add validate-all-hooks.sh script to validate all hooks.json files
Fixes: https://anthropic.slack.com/archives/C08EHE6JF3L/p1765822035850959