Let caller give pthread_cond_t to QuestionQueue

Also add a QuestionQueue which does not require
pthread_cond_t.

Parameterize QuestionQueue tests on the type on
QuestionQueue.
Implement eventfd and kqueue for QuestionQueue

Callers can create a QuestionQueue which will notify a give
eventfd or kqueue when something is enqueued.