Added tests for runIncremental method

Added tests to capture the main functional requirements of the runIncremental method.

Now runIncremental also checks that the user's runOps method returns only valid operations (@huntc – this protects against the problem that you had in your code).

````
[info] the runIncremental method should
[info] + always perform an op when there's no cache file
[info] + rerun an op when it failed last time
[info] + skip an op if nothing's changed
[info] + rerun an op when the file it read has changed
[info] + rerun an op when the file it wrote has changed
[info] + rerun an op when the file it wrote has been deleted
[info] + rerun an op when some of the files it read have changed
[info] + rerun an op when some of the files it wrote have changed
[info] + run multiple ops
[info] + vacuum unneeded ops from the cache
[info] + rerun an op if its hash changes
[info] + fail when runOps gives result for unknown op
````