Add before() and after() functions like in Capistrano

Capistrano lets you specify that a certain task should run before or after another one. This is a very useful bit of functionality and one that I think would greatly benefit altax. I've implemented the functions and tied their execution into `Executor`. There is also a sanity check to prevent an infinite loop of tasks.

Oh, and I wrote unit tests for the functions too. :)