Keep the recipes' state in objects, not global variables
The program's pool, a frame's data for parallel-for, a reused job group
and a thread's stop signal now live in objects the program makes and
passes, as the workspace's rules on global state ask. Each recipe still
allocates nothing per frame, on SBCL and CCL.