use factories to create coarse solver, smoother, etc. in the AMG

in !312 (merged) we implemented factories to create preconditioners, etc. On the longer run these should be used internally in the AMG to create coarse grid solvers, etc.