Only shallow copy when filtering a playlist.
We should iterate through the base playlist, because iterating over a
playlist that's having items removed is poorly defined. However, if
were iterating through the input playlist and removing items from the
copy, we need a shallow copy so the item ids still match. Curves can
belong to several playlists, so shallow copies are ok.
Another problem with the old version was that the _index was being
updated in the copy, not the current curve, so the
current_curve_callback() bit was *not* working.