func (w Worker) WaitForFinish() {
	<-w.done
}
Waits for a worker to finish before returning.
package gotowork
type Work func()
type WorkerQueue chan Inbox
type Inbox chan Work
type Worker struct {
	id          int
	inbox       Inbox
	workerQueue WorkerQueue
	quit        chan bool
	done        chan bool
}
func NewWorker(id int, workerQueue WorkerQueue) Worker {
	worker := Worker{
		id:          id,
		inbox:       make(chan Work),
		workerQueue: workerQueue,
		quit:        make(chan bool),
		done:        make(chan bool),
	}
	return worker
}
func (w Worker) Start() {
	go func() {
		for {
			w.workerQueue <- w.inbox
			select {
			case work := <-w.inbox:
				work()
			case <-w.quit:
				w.done <- true
				return
			}
		}
	}()
}
func (w Worker) Stop() {
	go func() {
		w.quit <- true
	}()
}