More plumbing for diffs, including support for adding diff listeners so that various types can contribute custom lines to include metadata in the diff