* add support for iterative mode
* avoid unnecessary initializations with zero and residual computations
when using W-cycle
* ensure smoothers (including the level 0 coarse solver) are used only
with iterative mode turned off
* when using W-cycle, do not call the level 0 coarse solver twice to
avoid calling "exact" solvers twice.
* Merged MultigridSolver into Multigrid class
* Moved as much as possible in to the Multigrid class in order to make DiffusionMultigrid smaller
* Changed interfaces such that they look like in the mockup from the 4/1/20 telecon