Big V3 refactoring and restructuring, including "context rollback"

The concept of "context rollback" comes from the idea that the context is the only moving part in calling an interactor that comes in contact with each interaction and could log/track those interactions. The logic for determining which interactors to roll back in a deeply nested organizer scenario started to become confusing. Instead, we track which interactors have manipulated the context… *on* the context itself. If we need to roll back, we tell the context to roll back and it tells each of those called interactors to roll themselves back. This approach simplified the interactor and organizer code a lot, without adding much complexity to the context object itself.

To better test these complex deeply nested organizer scenarios, the units tests were slimmed way down in favor of full integration testing.

The pull request also include a handful of other minor refactoring and renaming.

It may be easier to review this pull request commit by commit. Would love feedback on the new context rollback approach. It's a bit of a departure, but it's all internal mechanics. The external API stays clean.