Gets common ancestor of given iterables.

    Usage::

        >>> get_common_ancestor(("1", "2", "3"), ("1", "2", "0"), ("1", "2", "3", "4"))
        (u'1', u'2')
        >>> get_common_ancestor("azerty", "azetty", "azello")
        u'aze'

    :param \*args: Iterables to retrieve common ancestor from.
    :type \*args: [iterable]
    :return: Common ancestor.
    :rtype: iterable

def get_common_ancestor(*args):
    """
    Gets common ancestor of given iterables.

    Usage::

        >>> get_common_ancestor(("1", "2", "3"), ("1", "2", "0"), ("1", "2", "3", "4"))
        (u'1', u'2')
        >>> get_common_ancestor("azerty", "azetty", "azello")
        u'aze'

    :param \*args: Iterables to retrieve common ancestor from.
    :type \*args: [iterable]
    :return: Common ancestor.
    :rtype: iterable
    """

    array = map(set, zip(*args))
    divergence = filter(lambda i: len(i) > 1, array)
    if divergence:
        ancestor = foundations.common.get_first_item(args)[:array.index(foundations.common.get_first_item(divergence))]
    else:
        ancestor = min(args)
    LOGGER.debug("> Common Ancestor: '{0}'".format(ancestor))
    return ancestor