A bunch of performance and memory improvements:
scheduler_start(), do not reset the tasks'
tocor task debugging properties (see #611 (closed)).
- Make each cell that hosts a task carry a flag saying it has a task (see discussion in #523 (closed)).
- When unskipping, only recurse down to levels where tasks still exist (see discussion in #523 (closed)).
- When unskipping, duplicate the list of active cells in order to launch the threads not just on the cells but also on the different task types to enhance parallelization
- Move all the unskip logic to a separate file (part of #427 (closed)).
- Since we know at which level the tasks are, we can recurse less in the creation of send/recv tasks and use a lot fewer task links.