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.
I didn't see any of the scope changes that are required. Take a look at PrintIOVisitor.cpp, for FuncAssignNode, and LoopNode you need to add something lik SymbolTable::setCurrentFunction(node.name());