Refactor SimplePool and fix a bug

fillSlots already handles the case for zero, plus remember to strip
the completed task from the run queue.