Fix add_price recursion logic

Old version of add_price was adding product twice on each last iteration
of for i in kwargs[opt] loop
(once via recursion and once in the function end)

Happily we have for..else construction, so fix is trivial here
Do not add options with page count of 0

Also, return None instead of empty list, it is more logical and
keeps utils.add_price simplier
Ensure price entries are unique for given option set
set state flag on create also