added a periodic worker

The periodic worker will call a function periodically based on an input duration
This feels a little bit off. I'm thinking something more like:

    type Callback func(stop <-chan struct{}) error

    func NewPeriodicWorker(callback Callback, period time.Duration) Worker {
        w := periodicWorker{}
        go func() {
            defer w.tomb.Done()
            w.tomb.Kill(w.run(callback, period))
        }
        return w
    }

    func (w *periodicWorker) run(callback Callback, period time.Duration) error {
        tick := time.After(0)
        stop := w.tomb.Dying()
        for {
            select {
            case <-stop:
                return tomb.ErrDying
            case <-tick:
                if err := callback(stop); err != nil {
                    return err
                }
                tick = time.After(period)
            }
        }
    }