Fix AnswerContext bug causing builds to fail

When a queue item was deallocated, the need() call was
cancelled.  This behaviour is incorrect; when the *need
closure* deallocates, the need() must be cancelled.

Bug was introduced in commit
4155680515067fa46681dc639ab433937f19fb26 "Write test
ensuring AnswerContext enqueues Question".
Factor out shoving outputs into std::unique_ptr into macro
Move FileQuestion/FileAnswer into library

These components are reusable.  Each application should not
need to define these themselves.

Had to make the interface useable from C, so I scrapped
std::string and used plain C strings instead.  This won't
let clients have 0 bytes in file paths, but that's not
allowed on any OS I am aware of anyway.