New functions to ArrayFire

- diag
- identity
- Fixes #127 
- Fixes #128 
Lines 23, 24, 37, 40, 41 in `cpu::diagCreate` might result in temporary dim4 object creation. If we get a `const &`, we should be able to avoid any temporary objects at all.

Same comments regarding `cpu::diagExtract`.