* refactor: extra types `C` + `R` are never plumbed as `*C` / `*R`
* refactor: force use of `pseudo.Constructor.Zero()` instead of `NilPointer()`
* feat: `pseudo.PointerTo()`
* feat: `params.ExtraPayloadGetter[C,R].PointerFromChainConfig(...) *C` and `Rules => *R` equiv
* test: shallow copy of `ChainConfig`/`Rules` includes extras
* feat: `params.ChainConfig` extra payload can use root JSON
* refactor: simplify `ChainConfig.UnmarshalJSON()` branches
* fix: change redundant `assert` to `require` for simplicity