Fixing isFreeItem() due API mistake

The first time I fixed the buying of free items, it was purely a case of calling
the wrong functions at the wrong time.
Now it seems that 'isFreeItem()' was wrong, maybe wrong made in the first place, maybe due an API change.
Apparently if something is free, 'IsPublicDomain' is true, but 'IsForSale' stays false.