Change addProduct method to receive a key instead of the list

Change made for API consistency. Also to avoid using the list passed as
parameter as
the valid values, instead we get it from the datastore before modifying
it in the transaction.