Refactor ContributionManager code

 * Change argument types to take generic `ProgressMonitor` instances.
 * Move error handling code closer to the error source.
 * Reduce nesting to make code easier to follow and reason about.

Some deeper code changes to reduce duplication are outside the scope of this PR.

This may also make it easier to solve #2798. cc/ @joelmoniz
Generally being the operative thing here. If it's in there, it's likely that we want the error. An exception might be shown where it's something being actively debugged/reworked (as is the case here), and doesn't rise to the level of needing Base.showWarning().