Fix test failure and restructure the BuildContext execution.

Fix test failure with the BuildContext. The error was occurring because the stop_on_error flag was not having the intended effect.

Removed the BuildContext#_pump method and replaced it with BuildContext#_chain_rule_execution. The new method instantiates RuleContexts for each rule as it iterates through the rules that need to be built. It then uses deferreds to chain rule execution to the resolution of dependencies.