Bug 937766, part 1 - Remove dying nodes from gCCBlackMarkedNodes. r=smaug

With ICC, arbitrary other activity can happen while nodes are in gCCBlackMarkedNodes,
so the nodes can die, because gCCBlackMarkedNodes only holds a weak reference.
To avoid this, remove nodes from gCCBlackMarkedNodes when they are going away.
Bug 937766, part 2 - Make SnowWhiteKiller remove dying things from the CC graph. r=smaug

If we purge snow white objects while ICC is in progress, we need to
make sure to remove anything from the CC graph to avoid dangling pointers.
We don't need to do that after shutdown.
Bug 937766, part 3 - Add mParticipant null checks. r=smaug

When an object dies during an incremental cycle collection, we null out
its mParticipant, so we must add various null checks to avoid crashing
when we reach the CC graph representation of an object that has died.
Bug 937766, part 4 - Add GCGraph::IsEmpty method. r=smaug
Bug 937766, part 5 - Implement PrepareForGarbageCollection. r=smaug

Running the garbage collector can cause objects in the CC graph to
die, so just finish off an incremental cycle collection when we
start a GC.