Genesis contract code change in Bor/Geth

Currently, there is no way to change the genesis contract code but to deploy a new contract. When we deploy new contracts, multiple changes are required at the user’s contract and Heimdall level.

Parity/OpenEthereum allows doing the same while Geth doesn’t: https://openethereum.github.io/wiki/Validator-Set-Tutorial-1

Proposal

For Geth/Bor, it should allow a way to change it by having new genesis params where it should be done if all nodes agree.

...
block_alloc: {
    "<block_number>": {
      "0000000000000000000000000000000000001000": {
          "balance": "0x0",
          "code": "<new-code>",
      }
    }
}
...