Now get/put/has and ScriptableObject.get/put/hasProperty on the ScriptableModuleInstanceImpl object will be equivalent to each other
1. has() will return true for bound methods, fields and extra fields, added in prototype
2. get() will return methods or fields from prototype, but if they are overridden in this object, will prioritize those
3. put() will
- write into java field bindings directly via new ScriptableObject.getRawSetter
- override java method bindings for this object only (if VALIDATE_INVALID_WRITES = false)
- add/override extra fields (if VALIDATE_INVALID_WRITES = false)