Implemented inner product as a special case of reduction :
   reduce<add_type>(elementwise_prod(x,y))
Refactored to rename all occurence of inner_product