make JsonObject not subclass dict

this was problematic. For example, it's pretty intuitive
to want to test if something's a dict with `isinstance(obj, dict)`
but this will return true for a JsonObject too!

it now stores an inner dict `self._wrapped`
and selectively implements `dict` methods