ujson __json__ attribute logic
- [x] ./test_fast.sh works fine
     Ran 8463 tests in 127.338
     OK (SKIP=592)
- [x] passes `git diff upstream/master | flake8 --diff`

A port of ujson 1.35 feature: object can define `__json__` attribute for custom serialization. See
https://github.com/esnme/ultrajson/commit/a8f0f0f1010956b27bf0c2cb5e52d85bb84e273a

```
class ujson_as_is(object):
    def __init__(self, value):
        self.value = value
    def __json__(self):
        return self.value

df = pd.DataFrame([{"foo": ujson_as_is('{"parrot": 42.0}')}])
df.to_json(orient = 'records')
```

result `[{"foo":{"parrot": 42.0}}]`
