[OneStepGridOperator] Avoid unnecessary work in explicit_jacobian_residual()

The method explicit_jacobian_residual() assembles both the spatial and
time residuals as well as the time jacobian in a single grid
traversal. It does so by forwarding all engine calls to the prestage
engine of the OneStepGridOperator and the jacobian engine of the wrapped
GridOperator representing the time derivative. The require*() methods
indicating whether a given set of methods of the explicit_jacobian_residual
engine should be called thus have to be an or-ed combination of the
query methods of those two engines. This combination creates a possible
perfomance problem if the jacobian requires a smaller set of methods
than the prestage engine, which will typically be true because the
jacobian of the time derivative usually consists of volume terms only.
Calling the skeleton terms of the jacobian incurs a massive performance
penalty for higher-order methods with a large number of local DOFs due
to cache pressure.

This patch resolves the problem by individually testing each engine
before forwarding the calls.