slack, meross, stix, oauth: stop leaking Json.Error.t in public APIs
- slack: Json_parse variant stays string; convert Json.Error.t at the
internal api.ml boundary before wrapping.
- meross: Protocol.decode wraps Json.Error.t -> string at boundary.
- stix: bundle_of_string, decode_or_fail, encode_or_fail convert at
boundary.
- oauth: classify_token_error converts incoming Json.Error.t at entry.
- Test files adjusted: Json.Error.to_string for raw Json.of_string calls,
plain strings for package-level APIs that already convert.