Shortcuts for Function.assign

For the most trivial cases of assigning a Function to another Function
on the same function space, there is no need to go through the
expensive expression assembly machinery. We can just call a copy
par_loop. Similarly, for overloaded arithmetic operator we can fall
back onto the overloaded arithmetic on the Dat if the function spaces
match.