Refactored Phases and Steps.

Phases and Steps now drive the Engine through what needs to happen, which
feels more object-oriented than previously.