TODO: Implement num_traits::Float Consider Mul<Expr<T,V>> for T Order expressions in products so that constants propagate to the left, and variables are grouped together. Add distributivity of multiplication over sums optimization