[MERGE #4929 @sethbrenith] Don't cache missing properties from CustomExternalObjects
[MERGE #4929 @sethbrenith] Don't cache missing properties from CustomExternalObjects

Merge pull request #4929 from sethbrenith:user/sethb/missing-prop

I recently made a change to allow caching data about missing properties on any DynamicObject subclass, rather than just DynamicObject itself. It didn't happen to hit problems in a private crawler run, but is now causing problems because some types can add properties without invalidating the missing-property cache. A minimal repro of the problem is the following:

```javascript
var div = document.querySelectorAll("div")[0];
"something" in div.dataset; // false, add to missing-prop cache
div.setAttribute("data-something", "true");
"something" in div.dataset; // still false but should be true
```

This change allows DynamicObject or any array types into the missing property cache, which is a bit more permissive than the original but much stricter than the problematic version.

Fixes OS:16711773

Microsoft/ChakraCore,Microsoft/ChakraCore,Microsoft/ChakraCore,Microsoft/ChakraCore,Microsoft/ChakraCore,Microsoft/ChakraCore