Implement `eye` function
Add tests
Implement `diag`
Add tests for `diag`
Make Basic::diff() return Derivative

Previously it raised a "not implemented" exception. Now it simply returns an
unevaluated derivative.
Test that abs(x).diff(x) does not raise exception
Make sure abs(x).diff(y) == 0

Previously it returned a Derivative
Implement `ones` function and `zeros` function
Add C++ tests for abs(x).diff(y) == 0
Add tests for `ones` and `zeros`
Refactor `eye` to use `diag`
Fix test failure: Avoid comapring `unsigned` and `int`
Merge pull request #333 from certik/abs_diff

Polish abs(x).diff()
Add test and fix formatting
Refactor code as suggested by Thomas Hisch

Below is the original comment:
https://github.com/sympy/csympy/pull/332#discussion_r20773992
Merge pull request #334 from isuruf/functions

Function Symbols with multiple arguments
Merge pull request #332 from thilinarmtb/matrix_functions

Convenient functions for Matrices
Subs class