Revert "Revert "refs #10131. MultiPeriodWorkspaceAlgorithm refactored.""

This reverts commit d4440e725eff57aa87df5b4acb77264bf24f2940.
Revert "Revert "refs #10131. Cannot use typename outside of template.""

This reverts commit 11ba43d8a0a62b42d911a53420b77f7d63e44b01.
refs #10131. Fix broken test and functionality.