several fixes to `roots` function

This patch updates `roots` to

* use the Matlab ordering convention (highest-degree coefficient first)
* ignore leading zero coefficients
* take `AbstractVector` arguments (not just `Vector`)
* always return a numeric `Array`
* detect more error conditions
* not leak memory on an exception in `poly_complex_solve`