Instead of keeping all greenthreads active even
if they are not being used only keep the greenthreads
active if there exists active work to complete.
This saves resources (each greenthread takes up
memory) and allows a pool to shrink and grow in
a more dynamic fashion.
Fixes bug 1339406
Change-Id: Idc8ab8447045915a0ffbaf21fa5c4bdb7a9e3593