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