Merge in revision-info cleanups and changes.
Most of these are actually superceded by John's earlier work in this
branch. The remaining necessary bit done here is the aligning of the
outputs, which I've redone manually rather than trying to resolve the
conflicts.