Improve command line help

Generate the cmdline() help text programmatically using boost::program_options. This way the help text is never out of sync with the command line options.

Requires C++ (pull request #657)