factor out _unevaluated_Add for testing purposes

Although _keep_coeff handles the general need of making an unevaluated
Mul, there is no function to make a well-formed unevaluated Add as is
needed in collect_const. Although Add(*args, evaluate=False) can be
done there is no assurance that the args are in the right order. They
are only ordered when they are passed with evaluate=True through
Add.flatten...but that undoes the unevaluated Mul in the process. So,
until that is fixed, this is a workaround.
clean up collect_*

There were some dependencies between collect_sqrt and collect_const that
were reduced. collect_sqrt is more specialized in terms of collection
so it does the preprocessing with content_primitive; this is no longer
done at the lower-level collect_const routine. Also, collect_const
processes items in an ordered manner, so collect_sqrt no longer needs
the sorting of vars before the call to collect_const.