refactor(*): introduce new abstractions

This commits introduces:

sofa.productBatchResolver
sofa.productDecorator

It also make minor modifications to
sofa.categoryTreeResolver

Those new abstractions make it easier
to use the couchService against 3rd party
backends.
chore(dist): add dist files