unpack uniq generator in solve
make sure free_symbols of RootOf is set()

Both RootOf __new__ and _new can allow poly to become something other
than a PurePoly instance. Since RootOf only supports
univariate polynomials there should never be any free symbol returned.
use set flag to generate set results in docstring
Merge pull request #2129 from smichr/roots

handle generator in solve, RootOf.free_symbols, solve docstring