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.