Refactor circuit cannibalization into one place

There's at least 2 different functions (and maybe many more places) where we cannibalize a circuit and add a hop. We should consolidate all of these places into a single helper function with consistent properties.

circuit_launch_by_extend_info() is one such place. circuit_extend_to_new_exit() is another.

Also, I found this old note file in my tor.git dir, which apparently I wrote some time ago while reviewing all the places we can add hops to circuits:

  • Ways to add a new hop:
    • onion_pick_cpath_exit
    • onion_extend_cpath
    • circuit_extend_to_new_exit
      • circuit_append_new_exit
        • onion_append_hop
          • onion_append_to_cpath
    • rend_client_reextend_intro_circuit
      • circuit_extend_to_new_exit2
    • rend_client_receive_rendezvous
      • onion_append_to_cpath

Not all of those are cannibalize code-paths, but they are worth grepping for to make sure they aren't used as such in some dark corner of the codebase.