Allow to dynamically add new chain ID
Would preferably depends on: https://github.com/zeta-chain/node/issues/1477 Related: https://github.com/zeta-chain/node/issues/2002
Chain ID are static so we generally don't need to add a state variable to represent this information unlike chain params. However this requires us to add the static information and perform upgrade to support a new chain unless chain ID is defined long in advance. For more flexibility, we should consider the ability to specify new chain ID with an operational/admin message.
We could call this structure ChainInfo and I think the best place to keep it is the authority module. This goes beyond the scope of the observer module (example: could be read by just the crosschain module in a case the observer set is no longer used)
The static info would be read first, then the on-chain chain info list is queried as a fallback.
We would use it to support new chain temporarily, then rely on the static info after new upgrades.