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.

Also adds a test for `normalizePayload`. There were none 0_o