FEAT: ProductFactory Instance Type dynamically set

+ ProductFactory can be set thru Property 'product-factory'
+ Test for ProductFactory