dynamically load PROMOTION_CLASSES

This addresses the question I asked in #1560. It's a nice addition because it requires less forking if I want to add a custom promotion type.