WIP: Fix GlobalLinSys generation for different variable coefficient entries
This MR fixes the issue reported by @xfempty, in which two calls to
HelmSolve with matrix keys that had different values of variable coefficients resulted in the same global system being used to perform the solve. This is achieved by changing the
VarCoeffMap data structure, to allow for the efficient hashing of values in the coefficient map (and thus avoid computing a hash of the data every time
HelmSolve is called).
Two additional issues are fixed:
- a minor fix to the PETScFull solver, which had a small regression owing to !963 (merged);
- fix for 3D element Helmholtz matrix construction, which did not pass matrix keys through to StdRegions correctly, meaning that variable-coefficient mass matrices did not work.