Task garbage collection

improve how tasks are GC'd, to keep more and more varied -- see individual commits for details

NB builds on #159