When a scalar field arrives with a wrong-but-convertible JSON type, the
lenient decoder now coerces it to the expected type instead of dropping
it, degrading to nil only when the value cannot be converted or arrives
as an object/array.
- String target: numbers/bools render as JSON would show them
("85", "8.5", "true"); objects/arrays -> nil.
- Int target: doubles truncate, numeric strings parse exactly, bools
map to 0/1; non-numeric strings and containers -> nil.
- Double target: ints convert, numeric strings parse (non-finite
spellings rejected); else nil.
- Bool target: numbers map via value != 0; strings use a strict
whitelist (true/1/yes/on -> true, false/0/no/off/"" -> false, any
other string -> nil); containers -> nil.
Bumps the SDK to 1.5.18.