Matrix2

* Changed the ProfilPassManager to use shared_ptr instead of raw pointers
* Created a new class called Matrix2 sofar that can deal with more advanced data layouts
* Made the code compile with more restrictive compiler options
* Extended the Buffer class to specify during construction its usage
* Changed some typos here and there
* Added a CMakeLists.txt such that the project can now be configured using cmake
* Changed concatenation of CompileOptions from comma to spaces as the OpenCL compiler does not accept comma separated values