Fix corruption of cached template nodelist by placeholder scan.

get_placeholders() modifies the nodelist of a parsed template without
taking a copy. With non-caching template loaders this doesn't matter, but
with Django's caching template loader, the same template, with modified
nodelist, will be used next time the template is requested.

The main issue with this is that blocks inherited from a parent template,
and not overridden, appear as though they were copied literally into the
child template. Often this doesn't matter, but if the block uses block.super
and adds content, then because it's interpreted twice, the added content
will appear twice.
Merge pull request #3409 from aptivate/fix_template_cache_corruption

Fix corruption of cached template nodelist by placeholder scan.