A batch of changes to improve the results returned by pageDetail.

I'm not exactly happy with what I had to do with snapshot, returning two separate arrays of diffs, but it's 'good enough'.