tests: add 36 tests for CategoryFetcher (parser, cache, probe, dispatch)
New test_category_fetcher.py covering:
HTML parser (10): Rule34/Moebooru/Konachan markup, Gelbooru-empty,
metadata->Meta mapping, URL-encoded names, edge cases
Tag API parser (6): JSON, XML, empty, flat list, malformed
Canonical ordering (4): standard order, species, unknown, empty
Cache compose (6): full/partial/zero coverage, empty tags, order,
per-site isolation
Probe persistence (5): save/load True/False, per-site, clear wipes
Batch API availability (3): URL+auth combinations
Map coverage (2): label and type map constants
All pure Python — synthetic HTML, FakePost/FakeClient/FakeResponse.
No network, no Qt. Uses tmp_db fixture from conftest.
Total suite: 117 tests, 0.19s.