Normalized error struct for SDK failures.
@type t() :: %Ebay.Error{ code: String.t() | nil, message: String.t() | nil, reason: term(), status: integer() | nil }
@spec new(keyword() | map()) :: t()
@spec new(String.t(), String.t(), keyword()) :: t()