Various cleanup, such that superclasses can easily modify translation of node name and weight to keys

Also adds capability of setting up ring after instantiation, useful in discovery-based configurations where no nodes are known at instantiation time, AND uses new-style objects because PyPy docs say they're preferred.