roots: Factor expression before using roots_quadratic()

TODO: 
* [ ] fix failing expression

Example:
```
In [1]: var('a')
Out[1]: a

In [2]: M = Matrix([[a, 0], [0, 1]])

In [3]: M.eigenvals()
Out[3]: {1: 1, a: 1}
```
Before it gave `{a/2 + sqrt((a - 1)**2)/2 + 1/2: 1, a/2 - sqrt((a - 1)**2)/2 + 1/2: 1}`.