Ditz issue update
Testcase for skipped finalizers
Release note: mark-and-sweep finalizer skip
Fix mark-and-sweep finalizer memory safety bug

When one mark-and-sweep round leaves objects-to-be-finalized on the heap
finalize_list, the next round must treat them like reachability roots to
ensure any objects they point to get marked reachable.

The REACHABLE flag was cleared for objects-to-be-finalized when they were
moved from the heap_allocated list to the finalize_list.  This is correct
if finalizers are executed afterwards.  But when finalizers are skipped,
the next mark-and-sweep will mark the objects on the finalize_list REACHABLE
which broke some assertions.  Fix that by clearing REACHABLE flags for
objects on the finalize_list explicitly after sweeping.  This overlaps with
the existing code in the sweep phase in a harmless way.

This solution is a minimal fix to the issue.  In Duktape 1.1 the intent is
to rework mark-and-sweep so that finalizer execution can be independent of
mark-and-sweep, so a root canal fix wouldn't be useful at this point.
Merge branch 'fix-finalizer-skip-bug'

Fix a mark-and-sweep bug where memory safety could be compromised when
finalizer execution was disabled during a mark-and-sweep run.
Ditz issue update