Clean up execution

@mattwynne I've had a little play with the refactorings on the execution model we talked about.

- Moved execution back on to the `Test::Step`
- Moved decision making about when to execute steps on to the Result objects
- Introduced a `Test::CaseRunner`

I've also made the `SuiteRunner` always execute a `Test::Suite` as a visitor, and used actual objects internally.

I'm least sure that the `Test::CaseRunner` adds very much, but there might be a better implementation.

WDYT?