Purchasable factory fixes and improvements

* Purchasable factories now extend a common Abstract factory
* Factory service definition is declared as abstract/parent
* Default currency is injected, no need to inject CurrencyWrapper
* Purchasable factories are now prototype scoped
* Style and comment fixes