Severely refactor method CharacterSpell.score.

Flatten logic. Do not do this:

    if:
    elif:
    else:
        if:
        else:

Instead, do this:

    if:
    elif:
    elif:
    else:

Calculate a `base_score` before walking through the meat of the score
calculation. Calculate `base_score` in private method `_base_score`. Write a
doctest for method `_base_score`, revealing some bugs in the calculations, and
fix them.

Remove some excessively verbose comments and a spurious blank line.
Test method CharacterSpell.score