bookmarks: explicitly track identical bookmarks
bookmarks.compare() previously lumped identical bookmarks in the
"invalid" bucket. This patch adds a "same" bucket.
An 8-tuple for holding this state is pretty gnarly. The return value
should probably be converted into a class to increase readability. But
that is beyond the scope of a patch intended to be a late arrival to
stable.
http://example.com/no/anchor, branches: (None, [])
http://example.com/an/anchor, branches: ('foo', [])
http://example.com/no/anchor/branches, branches: (None, ['foo'])
http://example.com/an/anchor/branches, branches: ('bar', ['foo'])
http://example.com/an/anchor/branches-None, branches: ('foo', [])
http://example.com/, branches: (None, [])
http://example.com/, branches: (None, [])
http://example.com/, branches: ('foo', [])