Update Mul to use move semantics
Update the last few places with move semantics

We have to cast away const'ness in order to move the internal dictionary, but
since the expression that contains it is destroyed in the same function, it
must work.