Resolve "Add support for arbitrary operators"
It seems C++ doesn't allow pointers to templated functions since they aren't concrete instances of the function (see this Stackoverflow post). To get around this, we can create a wrapper function.
This MR changes the template arguments for the Solver class to allow the operator to return a type that's different from its argument (so the operator can return expressions like ippl::meta_laplace
even if the LHS is a ippl::Field
) and defines a macro so end users don't have to write the wrapper themselves (saves 2 lines).
Closes #3 (closed)