normalizePayload only gets the payload

normalizePayload has been living a lie. It claims to be passed the model
type when called, but in often does not receive this argument (null is
passed instead). This only serves to confuse the use-case for
normalizePayload, and encourage its use when overriding an extraction
helper is actually the right choice.

This tradeoff, dropping the argument of type in all cases, means
normalizePayload can still be run over data added with pushPayload.
pushPayload knows nothing of which model is being pushed, and thus
cannot provide the type reliably.