rework JsonProvider

rework `JsonProvider` so that the backing objects don't have to implement `List` and `Map`. This makes it easier to work with `ScriptableObject` instances in a Rhino environment or custon JSON implementions.