move Utils\set_user() to Runner::set_user()

it's not a general-purpose utility and it shouldn't be public
extract find_command_to_run() method
make load_command() and load_all_commands() standalone utilities
load path from --require before WP is loaded
introduce WP_CLI::add_hook()