Cache Changes and Tests

Adds tests for cache checks in the RuleContext. Also modifies the rule context so that if the rule has no source or output paths, the cache check fails regardless. This allows rules that don't ever contain valid file deltas to still appear as uncached. Also modify the cache check to fail if force=True was passed to the BuildContext.