Fixed #22523 -- Clarified pytz requirement.

Thanks z for the report and timo for the proposal.
Removed bogus, ineffective 'U' flag from codecs.open() call.
Use the new implementation of `six.with_metaclass`.

No more `NewBase` horrors.

Thanks to bendavis78 for his work on merging this into six.
Fixed #22447 -- Make sure custom model bases can be migrated.

Thanks to cdestigter for the report.