added a periodic worker

The periodic worker will call a function periodically based on an input duration
That's not right. The testError should have replaced the nil. Would you look into what's going on here please?

(a couple more tests like this would be good, too -- we should probably have an analogue of tomb.ErrDying (worker.ErrStopped?) that we pass on to the tomb as ErrDying (so it doesn't replace a nil error in the tomb) -- but otherwise make sure that errors out of worker functions *do* set the worker's error correctly.)