modify replace to truly act from the bottom up

Previously, replace would not target any subexpression in which
subexpressions were changed, so x*(x*y + 1) would become x*(2*x*y + 1)
if all Muls were being multiplied by 2. Now 2*x*(2*x*y + 1) would be
obtained.

Add more explanations to replace's docstring.
patterns in replace succeed only if complete
give replace a simultaneous option
replace has exact option to override old matching
Merge pull request #2062 from smichr/replace

modify replace to truly act from the bottom up