We should redo how the test execution lifecycles happen. In the current impl the flow is:
Client(BeforSuite, BeforeClass, Before) -> Container(BeforSuite, BeforeClass, Before, Test, After, AfterClass, AfterSuite) -> Client(After, AfterClass, AfterSuite)
We should map these 1 to 1 with the incontainer execution and keep the test instance alive between the calls.
Client(BeforeClass) -> Container(BeforeClass)
Client(Before) -> Container(Before)
This way the execution is closer to how it normally would be, and extensions can interact with the Container/Environment or Client in the appropriate lifecycles more naturally.