enforce publish data structure/event signature polymorphic key naming convention

The convention that "_id" and "_type" polymorphic references to other
models already existed. We simply added a validation to ensure
compliance from consumers (with a helpful error message when the
convention is broken).

This was a very deliberate decision to enforce a convention (and remove
minor flexibility) that cleans up a bunch of consumer code and encourages
adopters to follow sidekiq best-practices (serializing models as
primitive references).