When NewClient is given a custom *http.Client with Timeout left at zero,
apply the same 30s default used for the built-in client (clone so the
caller-owned client is not mutated). Preserve explicit non-zero timeouts.
Add unit tests for default, zero-timeout custom, and explicit override.
Signed-off-by: Sebastien Tardif <sebtardif@ncf.ca>