Restore product from receipt (bug 981235)

It seems a bit weird that when `onrestore` is called with an error `productInfo` could be `null` or the object with a `productId`. I could see people noticing an error and having `productInfo` be `null` then start expecting that to always be the case.