Consistent task names and resolving

This PR vastly simplifies working with `Node`s and `Task`s internally, by making accessing single and/or multiple tasks consistent.

The public API towards `Phakefile`s is left unchanged.

It replaces most of the "resolving" logic with the two simple methods `Node::get_task($task_name)` and `Node::get_tasks()`. Both work in a recursive manner for grouped task names (`foo:bar:baz`). The `Node::get_task()` method now also implements the fallback behaviour to search the name either in the current group or fall back to the root node. To be consistent, each `Node::get_name()` method now returns the fully-qualified name instead of only the local name within its group.

Any thoughts? Marking this as a work-in-progress for now.


Depends on #20, so its diff is a bit difficult to check.