Generalize the fit scheduler.

Extract the "fit predicate" from random fit to make it extensible/plugable