Base full collections of promotion rate.

There's no point doing a full GC every N collects if we're promoting
very little data each time. This patch, largely from timotimo++, uses
tracking of the number of bytes promoted to gen2 to decide when to do
it. This version of the patch correctly copes with blocked threads by
moving where we clear and contribute the promoted bytes.