Use copy par_loop when assigning Function on the same fs
Add shortcut for +=, -=, *=, /= operators on Function

Fall back to PyOP2 Dat arithmetic operators if operand is a scalar
or a Function on the same function space (for += and -= only).
Add shortcuts for *=, /= by another Function
Add expression tests for *=, /= by another Function
Merge pull request #255 from firedrakeproject/performance/shortcut-assign

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.