refactor: Saner packages/legacyPackages definitions
Change back to more manually assembled outputs for better control of the
overridden attributes
Create lib.callPackageRecursiveWith to wrap
lib.packagesFromDirectoryRecursive so that it works more like the
existing callPackageWith
Create lib.callPackageWith to make it automatically attempt to load a
subdir's package.nix or default.nix if present
Reintroduce package overlay and make it the default