Paper prep from master

This is a combined pull request for the "Full support for template functions, also unit/dimension support" and getting the CUDA backend up-to-date.

See https://github.com/sintefmath/equelle/pull/31 for updates regarding template functions and unit/dimension support.

Additional improvements:
* The class PrintCUDABackendVisitor now inherits PrintCPUBackendVisitor
* CUDA backend now support Sequence Of Scalar * Scalar
* CUDA backend now uses tuple instead of array for Arrays
* Made a version of shallow water equations with units: swe_units.equelle
* Fixed bug in shallow water simulator. Did not multiply flux with area of face before. This was not noticed as only cases with 1x1 grids had been used before.
> But it's always necessary for the serial backend..... (which is the default)

No, the path is not universal. On my system that is not where Eigen is installed anyway. The EXTRA... thing is less of a hack, but I agree that we should not force users to use it unless they were doing something nonstandard. I see that we do not use find_package for Eigen, that is probably what we should use, as @akva2 suggests.