Tweaking UIWebView code
Encapsulation refactor

Should have done this initially, but I'm a sucker for less classes nowadays. Still this is way easier to understand now.
Basically improved UIWebView progress

But this is fundamentally broken, despite this, it seems to work well.

The problem is in the calculation for progress in didFinishLoad. Here we don't know for sure that we are done, and we probably have already moved too much progress forwards because didStartLoad often happens after an initial batch of loads has already gone to zero. Nonetheless, this seemed to work better than the code I was using that was more complicated.
Proxy UIWebView delegate