New data structure for miner transactions
Created by: ChrisSchinnerl
This PR is a suggestion for a data structure that might help us avoid reordering transactions within the block after removing a transaction. It's essentially a double linked list.
Looking up a transaction by id, inserting a transaction and removing a transaction should all happen in constant time. After we are done modifying the transactions a call to transactions
returns a slice.
Since the miner already has to go through all the transactions once before solving the block, looping over the transactions one more time to get the slice shouldn't impact performance.