Abstract away calls to the Publishing API

Instead of invoking workers directly when publishing models to the Publishing
API, app code should go through this abstracted interface. This keeps the logic
for deciding how any given model should be represented in the content store
(and how it gets there) in one place.