To index txs, we have to bridge them over from the node.
Therefore, we add shared structs for `BlockTx`, `Tx`, `OutPoint`, `TxInput`, `TxOutput`, `Coin`, and bridge them in `bridge_block`.
We also set the positions for the block and undo data for each individual tx, so we can later read them again. This is a rather dangerous thing and easy to get wrong, which is why we thoroughly test this behavior. We add `ReadTxFromDisk` and `ReadTxUndoFromDisk` to `blockstorage.h` to test this. We'll need this later when querying txs anyway.