6960: Error merging citations

Cut-n-pastery of Repository functionality into Citation
to fix the bug pinpointed by merge_ref_test.SourceSourceCheck.

Refactoring to come next...

git-svn-id: svn+ssh://svn.code.sf.net/p/gramps/code/trunk@22953 4ae1f11a-8b86-4847-b8af-ab372f36d1fd
6786: Invoke editor on double-click in backlinks gramplet

git-svn-id: svn+ssh://svn.code.sf.net/p/gramps/code/trunk@22956 4ae1f11a-8b86-4847-b8af-ab372f36d1fd
6874: Use shorter names in add gramplet list.  Remove old attributes gramplet.

git-svn-id: svn+ssh://svn.code.sf.net/p/gramps/code/trunk@22959 4ae1f11a-8b86-4847-b8af-ab372f36d1fd
Refactor IndirectCitationBase out of 3 classes

Refactor common base out of Citation, EventRef, and Repository
class IndirectCitationBase(object):
    Citation management logic for objects that don't have citations
    for the primary objects, but only for the child (secondary) ones.

    The derived class must implement get_citation_child_list method
    to return the list of child secondary objects that may refer
    citations.

    Note: for most objects, this functionality is inherited from
    CitationBase, which checks both the object and the child objects.
Includes:
* has_citation_reference
* replace_citation_references
* remove_citation_references

git-svn-id: svn+ssh://svn.code.sf.net/p/gramps/code/trunk@22960 4ae1f11a-8b86-4847-b8af-ab372f36d1fd