Reading the SQL of a query that is not a prepared statement consumes
it, so the tracing executor rebuilds it from its parts. Rebuilding it
as a `(SqlStr, Option<Arguments>)` tuple made every traced query
persistent, including those built with `.persistent(false)`.
A dedicated `TakenQuery` now carries the original flag. It also records
the SQL on the span before reporting an argument encoding error, and
replaces the duplicated logic in `fetch_many` and `fetch_optional`.