Analyse commit body paragraph and return (label, message).

    >>> analyse_body_paragraph('* BETTER Foo and bar.',
    >>> ... {'BETTER': 'Improvements'})
    ('BETTER', 'Foo and bar.')
    >>> analyse_body_paragraph('* Foo and bar.')
    (None, 'Foo and bar.')
    >>> analyse_body_paragraph('Foo and bar.')
    (None, None)

def analyse_body_paragraph(body_paragraph, labels=None):
    """Analyse commit body paragraph and return (label, message).

    >>> analyse_body_paragraph('* BETTER Foo and bar.',
    >>> ... {'BETTER': 'Improvements'})
    ('BETTER', 'Foo and bar.')
    >>> analyse_body_paragraph('* Foo and bar.')
    (None, 'Foo and bar.')
    >>> analyse_body_paragraph('Foo and bar.')
    (None, None)
    """
    # try to find leading label first:
    for label, dummy in labels:
        if body_paragraph.startswith('* ' + label):
            return (label, body_paragraph[len(label) + 3:].replace('\n  ',
                                                                   ' '))
    # no conformed leading label found; do we have leading asterisk?
    if body_paragraph.startswith('* '):
        return (None, body_paragraph[2:].replace('\n  ', ' '))
    # no leading asterisk found; ignore this paragraph silently:
    return (None, None)