libserialize: allow non string key map import/export

importing object type string key maps is still supported
writing them should be explicit, and can be done as follows

```rust
let some_tree_map : TreeMap<String, T> = ...;
Json::Object(some_tree_map).to_writer(&mut writer);
```

related to #8335, #9028