Represent dependencies as sets

This makes depedency attribute work as it should, fixes issue #13 , and adds tests.

Also implements equality of the tasks objects and generates list of modified attributes by looking whether the actual values in the data dictionary changed.