#691 - Make the contract of an ExtensionResultHolder a more explicit, let properties be protected
Refactor the way inventory works in the framework by providing an extension handler for the methods within InventoryService.

This also adds the concept of a 'ContextualInventoryService' where additional data can be passed to the OOB framework inventory service. This is useful when other modules that expand upon the base functionality need other information in order to properly do its job (like the current order)