Reject pending message deferreds on Photoshop error

If Photoshop replies to a request with an error message that has no body then the deferred for that request is never rejected. This is because the deferred is only rejected if `err.body && err.id` is truthy. But when the message body is empty then `err.body === ""`, and so `err.body && err.id === err.body === ""`. The correct thing to do is, of course, to reject the deferred regardless of whether or not there is a message body. 

And, besides the superfluous and broken test for `err.body`, the `err.id` test is also broken because if `err.id === 0` then the test will also fail incorrectly. The pull request removes both of these broken tests in favor of a single test for whether `err.id` is an own-property of the set of deferreds and, if so, rejects the corresponding deferred.

Partially addresses [3787709](https://watsonexp.corp.adobe.com//#bug=3787709).
Is there a better way to test for whether or not a slot in an array is filled? I think the test is the same... I didn't even know until now that you could `delete` an array element.

I don't know anything about the performance implications of using sparse arrays. My guess is that sparse arrays are just treated like objects. But it might be a little better to use sparse arrays here since the keys are numbers? Sometimes problems arise from implicit conversion to string keys with objects.