Failing test that snes_monitor doesn't break solve

If we turn on the snes monitor for a linear solve of a mixed problem, we
get a nonsensical answer due to the solution vector being reused in the
monitor.
Fix snes_monitor for mixed problems

To avoid monitors stamping on the actual solution vector, produce a
Function internal to the snes solve that holds the current position of
the guess, and replace occurances of u in the forms we're using with
this new Function.