In preparation for the upcoming addition of external promotion capabilities, the native ad code was refactored to unify the system.

See the PR for more info on the details of the changes made:

Note: There was an initial bug caused by this release yesterday, which prevented new promotions with a priority range error. We reverted the PR to unblock new promotions and released an updated version with a fix today.