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.
Please do not put the asterisk next to the name, but next to the `const char` as in `const char* foo`. I know the opposite is common in C, but in C++ it should be avoided, because it obscures the type. This also goes for a few more places (I just made this single comment...)