Fix size-zero parallel for loops
Fix size-zero parallel for loops

In our default thread-pool, the thread that claims the last loop
iteration from a job is responsible for popping it off the global work
queue. I found a case in the wild of a parallelized reduction over 0
things.

A job with zero things in it has no last loop iteration, so nobody was
popping it. The main thread thinks that the job was completed by someone
else and returns, and then a worker sees the job, which is now described
by a clobbered stack frame, so the worker then does arbitrary nonsense.

Our serial for loop codegen handles extents <= 0 gracefully, so I just
changed the parallel for loop handler to do that too.


Former-commit-id: 7ce1ddca51ca11940cd67997338fb674f8070454
Trass3r/Halide,Trass3r/Halide,darkbuck/Halide,Trass3r/Halide,Trass3r/Halide,Trass3r/Halide,darkbuck/Halide,darkbuck/Halide,Trass3r/Halide,Trass3r/Halide,darkbuck/Halide,darkbuck/Halide,darkbuck/Halide,darkbuck/Halide