Rebasing onto master's Podcasting-branch-unrelated changes surfaced several
integration gaps the merge conflicts didn't catch:
- conf.Server.DataFolder is now a Dir type, not a string; podcasts.go and
its tests needed .String()/conf.NewDir() at each call site.
- subsonic.New() gained the podcasts.Podcasts parameter; several e2e/unit
test call sites elsewhere in the tree were still passing the old arg count.
- The uniform-canonical-ids migration (dated after our podcast migrations,
so it runs against a schema that already has the podcast tables) didn't
know about the new podcast_* id columns, leaving them unrewritten while
everything else (including podcast_episode.stream_id's matching
media_file.id) got canonicalized.
- opensubsonic_test.go's expected extension count was miscounted during
conflict resolution (9 Podcasting 2.0 extensions, not 7).
- .gitignore's unanchored `podcasts/` entry from an earlier commit
accidentally matched core/podcasts/ (source) in addition to the
downloaded-episode directory; anchored both to their actual paths.