Add ancestors method to Task

This package is incredibly useful for GeekTool. I'm using it to list today's incomplete tasks on my desktop.

I wanted to filter the tasks shown using one of two tags depending on the time of day. To do so, in the Ruby script executed by GeekTool, I do this:

    tag = ((8..17).include?(DateTime.now.hour.to_i) ? 'Work' : 'Home')

So between 8am and 5pm, it'll filter for the Work tag, and otherwise the Home tag. Great!

The problem is that I'm organizing my tasks into five different areas of responsibility, four of which are tagged with Work and the fifth with Home. So there are some tasks that are not tagged with Work or Home themselves, but belong to an area that is tagged with Home or Work. Also, there are some tasks for today that are part of projects which are not tagged with Home or Work, but the project is part of an area with Home or Work; in this case, the task's parent is the project, and the project's parent is the area, and the area has the tag I'm looking for. So I can't look for Home in the task's tags, and I can't look for Home in the task's parent's tags.

To get around this, I created a function in the Ruby script:

    def root_ancestor(task)
      return (task.parent.nil? ? task : root_ancestor(task.parent))
    end

so that I could then test for `root_ancestor(task).tag?(tag)`

So why not add this as a feature of `things-rb`? That way, I could do this:

    task.ancestors.collect{|a| a.tags}.flatten.include?(tag)

This latter implementation is much better as it checks for my tag anywhere in the ancestor chain, not just as the root task. Also, it's more terse and elegant.

I've added the method to `task.rb`, aliased it as `parents`, and added a test for it. In order to test the method, I needed to modify the fixture database so that there was a task in a project in an area. The test asserts that `task.ancestors == 2`.