Add optional 'before_invoke' parameter to WP_CLI::add_command()

This avoids repeating the command name and makes it clearer when the
callback is fired.

The question is: do we still need hooks?