Use postulates for decEq primitive proofs

This means we can assert there is a proof at compile-time, but we're not
going to rely on the structure of that proof anywhere (which can cause
problems if they are relied on elsewhere).

Fixes #1005