Add ToJSON/FromJSON instances for Shelley era transaction types
Add JSON serialisation instances for all types composing `Tx TopTx ShelleyEra`:
- `cardano-ledger-core`: `TxIn`, `TxId`, `Metadatum`, `WitVKey`,
`BootstrapWitness`, `Addr`, `RewardAccount`, `ScriptHash` (ToJSONKey/FromJSONKey)
- `cardano-ledger-shelley`: `ShelleyTx`, `ShelleyTxBody`, `ShelleyTxWits`,
`ShelleyTxAuxData`, `ShelleyTxOut`, `MultiSig`, `Update`, `ProposedPPUpdates`
Conventions followed:
- `kindObject` for sum types
- `ToKeyValuePairs` + `deriving via KeyValuePairs` for product types
- TxIn serialised as "TxIx#TxIx" text key
- Map fields serialised as JSON objects (not lists of pairs)
Add golden JSON test for `Tx TopTx ShelleyEra` at `eras/shelley/impl/golden/tx.json`.