Fix test failure and restructure the BuildContext execution.

+ Fix test failure with the BuildContext that 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 depending
  on the resolution of dependencies.
Add cache tests and cache support for rules with no src/output

+ Add cache tests for the RuleContext#_check_if_cached method.
+ Return False from RuleContext#_check_if_cached if there are no src or output files. This is necessary to allow rules such as shell_execute to run even if there are no src or out attributes to the command.
RuleContext#_check_if_cached returns False BuildContext.force is True.

Modify the RuleContext so that #_check_if_cached returns false when the
BuilContext contains force=True.
Merge pull request #9 from Husafan/cache

Cache Changes and Tests
Merge pull request #8 from Husafan/context

Fix test failure and restructure the BuildContext execution.
Merge pull request #1 from google/master

Merge in head from google/anvil-build.