Fixed: Fatal error attempting to play maps with scrolling surfaces

Unlike QSet::remove(), the older SurfaceList implementation allowed
one to remove an element from the list whilst iterating. Now that
the surface list is represented as a QSet (which implements the list
internally as a hash) the existing logic is invalidated.

Reimplemented R_InterpolateSurfaceScroll() accordingly.