The issue is that with normal couchdbkit, if `my_string` is a `StringProperty`, then

```python
self.my_string = non_string
```

actually does an implicit `unicode` conversion (the setter function calls `unicode` on whatever's passed in) so it's equivalent to

```python
self.my_string = unicode(non_string)
```

With jsonobject, I made the decision to cut out a bunch of this implicit conversion which always just felt sloppy. What that means for here though is that in order to get the original behavior, we need to check if value is expecting string, and if so do that conversion explicitly.

I should add that jsonobject still does implicit conversion on dynamic properties for a couple reasons. One is that that that behavior is relied upon so prolifically that it would be impractical to try to change; the other is that it actually seems like one reasonable way to deal with that problem. For a typed property, enforcing a type makes sense, but for an untyped property, I think it makes sense to try to infer types. Mostly what that means is that xxxx-xx-xxTxx:xx:xxZ get converted to a datetime (and the same for dates, times, and Decimals).