Factor out StringChoiceOption
Factor out logic for 'a string option which is one of a set of choices'
from CompactOsStringOption as StringChoiceOption.
v2:
Allow different behaviour for option without a choice, and option absent.
Future work: This doesn't say anything other that "Error during option
processing" if you've given an invalid choice string, or left it out
when it's required, because libgetopt++ doesn't output anything, just
returns success or failure after processing the command line arguments.