added buildProductMap that returns a mapping of products to manufacturer

assumes everything can fit into memory, missing exceptional checks