Execute a multi-hop atomic arb.
Flow:
caller authorises this invocation (must include token transfer auth).amount_in of token_in from caller.min_final_out; panics if below.caller.For cyclic arbs, token_in equals the last hop's output token.
Returns the final output amount.
fn execute(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
token_in: soroban_sdk::Address,
amount_in: i128,
min_final_out: i128,
hops: soroban_sdk::Vec,
) -> i128