extract create_subcommand() method
make the Subcommand constructor accept a callback

the idea is to have fewer parameters, with a clearer purpose