Refactored the WizardTrait and renamed it to WizardUsageTrait. It now effectively supports various usage patterns including as a route controller and for ajax commands like modals. The subsequent code dependent upon that trait and its approach was refactored and is generally simpler and more concise.
using the temporary form state values proved trickier than expected. Ultimately a new validate method was added to the interface which repopulates the wizard values in form state before any other validate or submit method are run.
wizard values were saved in the storage variable of the form_state object which would ultimately create problems during form caching if something like a node entity or user were present as part of the wizard cache_values. This is unlikely, but in the case where a wizard generates multiple entities at the same time, it seems likely that the full entities in the wizard values would be favorable to just arrays of values, so the wizard values have been moved into form_state temporary storage which is removed before forms are cached
refactored the label/id fields out of the base wizard and into the entity wizard base class instead. Added an exists() method for the entity wizard interface and generally cleaned up the basic usage of these methods.