cleanup and unique TaskPath

- Make the `TaskPath` unique: `TaskPath#root()` takes now an ID which is
 - a DB sequence number when `DatabaseRecoveryService` is used
 - an increasing number when `AlwaysFinishedRecoveryService` is used

- Cleanup:
 - remove some unnecessary calls
 - simplify `TaskPath#fromString()` (it's easier since `TaskPath#root()` is not an empty string anymore)
 - ...