Refactor Multiphysics system, add nonlocal_foo()

This is going to be necessary to get AveragedTurbine working, but it's
a nice code reduction too.

We could make these method pointers into template parameters instead
to make the generated code equivalent to the previous case, but this
code is already heavyweight enough that funky templating is not where
I'd start with optimization.
Compatibility with FEMSystem::nonlocal_stuff()

Physics might now be called upon for evaluations of SCALAR variable
terms that aren't on an element at all; in those cases there's no harm
in calling the nonlocal_stuff() method requested, but we do need to be
sure not to dereference the NULL element.