Feat/genres-v2-implementation (#3164)
* feat(genres): Core genre system
* feat(genres): add background scanner for metadata.genres
* refactor(genres): add genres to base
* test(genres): add test suite
* fix(genres): eixsting genres are not recreated at migration
* feat(genres): guard against infinite loops in scanner
* fix(genres): remove duplicate, improve tests
* fix(genres): limit genre tracks return
* refactor(genres): use logger rather than print
* refactor(genres): use asyncio.gather rather than sequential calls
* refactor(genres): various fixes after review comments
* refactor(genres): randomize selection, use asyncio gether
* refactor(genres): remove alias object
* fix(genres): fix n:n relationship, safeguard comparisons
* refactor(genres): address review comments
* fix(genres): fix issues after rebase
* test(genres): add missing param to library sync tests
17 files changed: