Cache used task entries

The single-threaded scheduler now caches used `flt_task` instances in
each execution context.  The sequential_run and concurrent_batched test
cases now run much more quickly, since this greatly reduces the number
of `malloc` calls we have to make.  For sequential_run, it's now O(1),
and for concurrent_batched, it's now O(batch_size); before they were
both O(input_size).  The concurrent_unbatched test case isn't any
faster, since it still has to make O(input_size) `malloc` calls.