Split op_prod into {op_mult, op_prod, op_element_mult}, similarly for op_div, rearranged op_executor, removed some temporaries.

The split of op_prod as well as op_div into {op_div, op_element_div}
allows to collect some more operations within a single overload for the expression executor.