Currently the priority of a transaction is represented by a `double` which has units of `blocks * satoshis / bytes` with calculations spread across coins.cpp, transaction.cpp, miner.cpp, and validation.cpp. This value should be wrapped in a type that ensures that calculations and updates to priority are done properly and updated in a single place.