It's included in the block which is usually solved by a pool, and divided to each miner (depending on their share of the work done).
How would this work for solo miners, would they ever get tx fee revenue?
If they find a block, then yes.
What happens is that every transaction contains one or more inputs and one or more outputs. The difference between the total BTC value of the inputs and the total BTC value of the outputs makes up the transaction fee. These coins don't directly go anywhere, in a way they go into nothingness. But miners are allowed to add up all these differences and add them to their base block reward (the 25 BTC we're currently at) when creating their reward-transaction.
OK so if they find a block, get rewarded 25 coins how do they add tx fees to this amount and actually see the coins?
They aren't awarded 25 coins. They are awarded the current subsidy (right now 25 BTC) PLUS the value of fees of all tx included in the block. For most blocks right now that is slightly more than 25 BTC.
Example of a recent block.
https://blockchain.info/block-index/463885Notice the first tx has no input only an output. That is the coinbase tx. It is how miners "get paid". The protocol requires a block to have one and only one coinbase tx per block. It is the first tx in any block. Unlike any other tx it has no input only an output. The miner is minting some coins from nothing (the subsidy) and collecting the tx fees for all tx in the block at the same time.
You will notice the value of the coinbase is not 25
.0000000 BTC it is 25.
09845377 BTC. The value of all the fees paid on the 706 tx in the block combined is 0.
09845377 BTC.
The miner paid itself 25 BTC (subsidy) + 0.09845377 (fees) = 25.09845377 BTC (total).
Miners can't cheat because all nodes on the network verify blocks. All nodes know what the current subsidy is and they can verify the amount of fees paid on all the tx in the block. If the coinbase is "too much" the block will be rejected. As a weird exception the miner could actually pay himself less. A coinbase of 25.0984537
6 BTC for this block would be valid as would a coinbase of 25 BTC or 0 BTC. However a coinbase of 25.0984537
8 would be instantly recognized by every node on the network as invalid and deleted.