Fix table iterator issues

* incomplete results when performing the same query twice and exhausting
  the second iterator before the first. (First one writes incomplete
  results to _seqcache)
* False results potentially going to _seqcache if Row.update is used during
  iteration.
* index wasn't being used if it claimed there were no results. Issue #351