copy live objects directly to older generation

Use depth-first search instead of BFS
so forward/ref doesn't need a
consecutive queue on heap