ExtensionRegistry clean up

Work oriented toward ensuring the ExtensionRegistry is put into a correct state when ops that modify it fail.

Primary JIRA is WFCORE-21; the other work is general cleanup of how this class works and is used.
Yes, it does, but probably shouldn't. I just converted ExtensionRemoveHandler from using AbstractRemoveStepHandler to being a direct OSH impl, so that bit you linked was simply the existing semantic.

But I don't see any reason doing an ExtensionRemove should trigger reload-required. ExtensionRegistry.removeExtension will fail if the extension still has registered subsystems, so the reload-required is at best some sort of 2nd line of defense against subsystem remove handlers needing to call reload-required and forgetting to do so. That's not valid. I'll remove it.