Added top-level new() function.

MODEL: this commit introduces the "make-new protocol." Classes currently
implementing a new() method called like this ...

    new_maker = maker.new(flavor='cherry')

... will be called like this ...

    new_maker = new(maker, flavor='cherry')

... instead.

The protocol is simple: implement a __makenew__() method on your class and the
top-level new() function knows what to do.

This helps take the largely nonsemantic new() method out of the public
interface of custom classes and down into the dunder section of a class's API
entry.