We used to read in a completely new array when refreshing
the index. The problem with this is that the selection
changes when reading in the new array. We avoid this
by changing the current array, rather than loading in
a completely new one.
This merges functionality that was previously stored in the
combination of PBGitCommitController / PBChangedFile to a
dedicated controller, PBGitIndexController.
This changes a bunch of ivars to __weak's, to avoid reference loops.
Furthermore, in PBGitHistoryController, we need to call [webView close],
otherwise some memory will never be freed?