Optimization in ProductCollectionViewController#cellForProductViewModel:

Eagerly checks that the given product view model by is stored
in the product collection view model. If that is not the case
then the methods returns nil.

This avoids the creation of a NSIndex object and the lookup
for the posible collection view cell for that index.
Refactor notification handler registration methods.

Change the name of the method that registered all the notification
handlers.

Also adds a self explenatory method to register each
notification handler, it makes it easier to read.
Adds comments in ProductCollectionViewController.m.

Clarifies we the notification handlers are registered/unregistered
when view will appear/disappear.
Extracts favorite property notification to its own method.
Changes product favorite property change notification name.
Updates & notify change of product favorite property eagerly.

The product favorite property is imediatly changed in the
setFavorite:withHandler in the product view model class.
This is done to have a more responsive UI because the
notification is also triggered eagerly.