Filter packages output by requiredPackages
Summary
When horizon.packageSet.requiredPackages is non-empty, only those packages are exposed as flake outputs (packages.*). Non-required packages remain available via legacyPackages for downstream composition but are not built by CI.
This enforces the "every flake output must build" policy — only required packages need to build for CI to pass.
Backward compatible: when requiredPackages is empty (default), all packages are exposed as before.
Closes #17 Ref: package-sets/horizon-advance#2