refactor TaskConfig to TaskBuilder

I also refactored the DummyTask to DummyMaster and DummySlave so that it is easy to reason what they do.
We now need to define how to handle the communication between nodes.
As we want to get rid of the tasks slice for `GetTask`, I guess we have several opinions here:

1. add a `appendTask(ts []task)` function to the interface
2. assume the taskBuilder will be initialized with the tasks information