RFC: add iterator for status

A long, long time ago we talked about adding rename support to status.  When we did, @arrbee mentioned that he would like to see status move to an iterator-based pattern (like `git_note`).

This adds an iterator for status and moves the existing `foreach` pattern over to use it.  The existing `foreach` pattern stayed the same for compatibility.  This means that there is no hope for rename support with the existing `foreach` pattern.  I could switch this out to `old_path` / `new_path` if somebody thought this was valuable, but I suspect that if we're going to do this, we should mark the old pattern as deprecated and not worry about it.

Thoughts?

Am I crazy?

Did I massively misunderstand the intentions here?

Assuming the latter is not a "yes" (we all know the answer to "am I crazy" is a yes, but that won't deter me), then I will layer some rename detection on top of this and try to figure out a not ugly way to match the `head2index new_path`s up with the `index2workdir old_path`s.