Reimplemented `topleveltools.new()`.

`new()` can now alter properties of arbitrarily-deeply-nested aggregate objects
via a double-underscore-delimited syntax similar to the current nested override
syntax.

    >>> talea = rhythmmakertools.Talea(
    ...     counts=(1, 2, 3, 4),
    ...     denominator=16,
    ...     )
    >>> maker = rhythmmakertools.TaleaRhythmMaker(
    ...     talea=talea,
    ...     )
    >>> print format(maker)
    rhythmmakertools.TaleaRhythmMaker(
        talea=rhythmmakertools.Talea(
            counts=(1, 2, 3, 4),
            denominator=16,
            ),
        )

    >>> new_maker = new(maker, talea__denominator=32)
    >>> print format(new_maker)
    rhythmmakertools.TaleaRhythmMaker(
        talea=rhythmmakertools.Talea(
            counts=(1, 2, 3, 4),
            denominator=32,
            ),
        )

NOTE: `new()` now ignores all `__makenew__()` definitions. Those can be
removed, and any special logic eventually worked into `new()` instead. One
possible area of trouble could be `*args`, which `new()` does not make use of.
Merged master.