* Consider all the tasks from the current level + 1 when fetching the parents
tasks
* Exclude the child level when computing the parent row needed to create an edge
that don't overlaps with the tasks of greater level.
Add a tasks graph display in addition to the list display. A button will let the
user choose between the two display formats (defaulting to the tasks graph).
Since the graph is a DAG with many edges it's quite difficult to organize the
tasks and the edges without any overlap.
The current implementation uses a simpler approach where tasks are distributed
horizontally by their level and tasks at the same level are distributed in a way
that there's always space for an edge also if the child is some levels below.
In this way edges may overlap and in this case they will appear as a single
edge.
The user, when hovering over a task, will see the connections with the other
tasks since the related edges becomes bolder.