Allow multiple occurences of the same tag in one item.

This is accomplished to store a list instead of a single value in the
'tags' value of the todo hash.
Move tag addition and removal to TodoTxt.pm.

These subs are tag duplicate proof.
Also fixed a typo while I was there ('key' vs. $key).
Add new action to create, remove and list dependencies between tasks.

A dependency from task A to task B means that task B has to be finished
before A can be finished.

Task A would receive a dep: tag, referring to the ID which appears in
task B by means of an id: tag. Note that these ID's are different from
the task numbers, since the relations could get messed up if the
todo.txt is changed. Hence a different system must coexist to identify
tasks. However, on the command line you work with the normal task
numbers as printed by todo.sh.

Note that an id tag should only appear once per task, a task may have
multiple dep tags, though.

For example:

01 (C) 2013-07-27 Learn the Russian language. dep:1 dep:2
02 (C) 2013-07-27 Buy a Russian - English dictionary. id:1
03 (C) 2013-07-27 Learn the alphabet. id:2

The upper task depends on the lower two tasks.

You can list the two subtasks by running:

todo.sh dep ls 1 to

Or you can list the tasks which depend on task 03:

todo.sh dep ls to 3
Add license.
Add license.
Create getter for a reference to the array of todos.
Move some functionality to a separate module.
Create new filter which hides todos which has uncompleted dependencies.

An additional constraint is that the todo should not be part of a cycle,
in that case a todo should also be shown. However, this condition is not
implemented yet.

Example:

2013-07-29 Task 1       id:1
2013-07-29 Task 1.1     dep:1 id:2
2013-07-29 Task 1.2     dep:1
2013-07-29 Task 1.1.1   dep:2

The result after applying this filter will be:

2013-07-29 Task 1.2     dep:1
2013-07-29 Task 1.1.1   dep:2
Add check for inclusion in a cycle.

Do not filter tasks which are part of a cycle.
Merge branch 'dev'