Update menu and fix descriptions

Violations now have a :menu_description key to differentiate
from the regular description that functions as a report header.
The :menu_description describes the specifics of the violation,
whereas the :description just says what kind of violation it is.
Add violation-checking code to menu.

Also move menu-specific code like #edit_file and #program_exist?
from Runner to Menu. Now, with the menu responsible for checking
its own violations, the issue where tons of warnings are printed
because Ncurses constants are being redeclared goes away since
the menu doesn't need to be regenerated from runner.