restart processing after checkpoint reset

Also keep checkpoint updated using heartbeat even if no changes are being streamed.
is it intentional that this should output the date in the format `2014-07-28T18:56:28.208660+00:00`? Everywhere else we use `'2014-07-28T18:56:28.208660Z` (OK actually we cut off the microseconds because couchdbkit did that and I emulated that in jsonobject, but that will soon be a thing of the past.) Anyway, it's kind of pedantic and this is pretty isolated, so I doubt it matters.