Throw if evalGradients is called with non-uniform phase states
Evaluating gradients inside an element is only correct if all element vertices have the same phase state, i.e. the same set of primary variables. Determine if all vertex phase states are the same. If not, throw. Enable the possibility to ignore the phase states and enforce the gradient evaluation.
Fixes #624 (closed).