playlist: Add diff function to compare two playlists
playlist: Clean up merge to use diff
playlist: Refactor merge

New version treats weight/vol more transparently, but may not present the
logic as clearly.