Builder|Fixed: Don't HTML-encode non-ASCII characters in XML feed

The XML feed is UTF-8 encoded.
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.
Merge branch 'master' into revise-texture-animation
Material: Animate material detail layers with stages

Todo: Fix flickering when multitexturing is enabled for details.