Add tentative code for simple profiling

The code doesn't yet work and is disabled by default.
Add preliminary support for the clang compiler

The goal is to add support for LLVM/clang in the build infrastructure.
In the end all of the sanity checks and other tests should be supported.
Adopt the official naming convention for cuBLAS
Extend Sparse<T>, move matrix copying into copy()

Added various format converter and copy operators for Sparse<T> to make
it more useful and less of a second class citizen.
All operations related to copying data is now in LinAlg::copy() and its
overloads. The members of Dense<T> and Sparse<T> use copy() whenever
possible, making some forward declarations necessary (forward.h). copy()
also provides matrix format conversions, using the code in
utilities/format_convert.h
Adding .rows()/.cols() to SubBlock, removing IJ
Fix minor cosmetic issue in comment