Move logic back to ExecuteCases from ExecutionModel allowing ExecutionModel to focus more on the graph of behaviors rather than the inner workings of those behaviors.
Fix name of RunnerTests.
Move RunnerTests to appropriate namespace.
Move RunConvention(...) from Runner to ExecutionModel, because that's where all of the routine's state lives.
Extract Method for the handling of the 3 kinds of tests results (skip/pass/fail) in the main convention-running loop.
Extract behavior chain ownernship from ExecutionModel by adding ExecutionPlan.
Move ExecutionPlan to its own file.
Rename ExecutionModel to ConventionRunner.
Drop ExecuteCasesTests as redundant and too fine-grained.
Extract private method from ConventionRunner.Run, to run a single discovered test class.
ExecuteCases's constructor receives the case behavior chain instead of the whole ExecutionPlan, because that is the only part of the plan it needs.
Separate CaseDiscoverer into separate ClassDiscoverer and CaseDiscoverer classes.
Move ClassDiscoverer to its own file.
ConventionRunner becomes ClassRunner, which Runner uses to run each discovered test class.
Class behaviors CreateInstancePerClass/CreateInstancePerCase own test class construction and disposal.  ExecutionPlan's sole responsibility is to construct the behavior graph.
Rename CaseExecution.Pass() to CaseExecution.ClearExceptions() to better describe its intent.
Rename fields for brevity.