feat(W1): packages/connectors - AF API, generic URL, dedupe, normalizer
- Connector protocol with fetch(query: SearchQuery) -> list[RawPosting]
- ArbetsformedlingenConnector: official Platsbanken API, field mapping
(headline->title, employer.name->company, webpage_url->url,
description.text->description, id->external_id), region mapping,
polite User-Agent
- GenericUrlConnector: readability extraction (prefers main/article,
strips nav/footer/script/style), title/company guess, Cloudflare
challenge detection -> UnsupportedSite
- dedupe helper: (source, url) + external_id keying
- normalizer: RawPosting -> JobPosting (job_posting table shape)
- 37 tests, all passing, recorded fixtures (no live network)
- README with usage and mock examples