Factored out Hash::Diff - replaced with manual implementation

All the diffing work is now done in-house, with adaptations specific to
our needs...