move command instance creation to a separate class

Keep the disabled_commands logic inside the WP_CLI class; show an
explicit error, instead of pretending the command doesn't exist.