extract base Menu class
basic chargen menu
firm up per-greenlet session scope and per-command(ish) transaction scope