Cache product in product collection item
StandardProduct alias is not used in the class
ProductCollection must tell item if it is locked
Added getter methods to transparently retrieve properties from product or item
Only create a product object if a record is found

To retrieve properties from the collection product, the helper methods
should always be used.
Added ProductCollectionItem::hasProduct() method