fix(dirty_checking): fix bugs in algorithms, disable Iteratable tests

I've fixed some bugs, and now most of these tests are passing (those which don't involve watch groups).
So horray!

One of the larger specs (the second `should detect changes in lists`) appears to actually be testing
that it can detect changes in iteratables, which are not something we have in JS. So I've commented
this out for now. However, the code does contain blocks for dealing with iteratables, and maybe we
need to make this work well with ES6 generators, or something similar.

We shall see. I'm quite happy with this for now.