Move transaction collection to a separate function.
Keep track of when transactions entered the mempool.
Implement feeOrPriorityRequiredForNextFewBlocks based on mempool
Fix incorrect comment.
Remove option to skip checking inputs in AcceptToMemoryPool.

The only case this actually effects is ReacceptWalletTransactions,
and in this case, if a transaction can't get into mempool, its
largely hopeless anyway (we should assume the tx "expired")
Switch to a memory-limited mempool and use CTx::GetPriority

This makes mempool memory-limited instead of unbounded based on
seemingly arbitrary fee limits.  It requires a few additional
maps to keep track of transactions with high priorities and high
feePerKbs so that removing old transactions is fast.

By default, when the mempool reaches MAX_BLOCK_SIZE*10 total
transactions by size, it removes transactions to reach
MAX_BLOCK_SIZE*9 total transactions by size.  It first removes
all transactions which have been in mempool for longer than 144
blocks (1 day).  If it is still larger than MAX_BLOCK_SIZE*9 after
that, it picks the top MAX_BLOCK_SIZE*7 transactions by feePerKb,
and the top MAX_BLOCK_SIZE*2 transactions by priority and throws
the rest away.
Refactor GetMinFee (TODO: handle the mempool-didnt-respond case)
Set hard limits on tx prio/fee based on the txn we throw away.
Essentially nothing, initial block reading for fee calc
TODO...come up with a whole new way of doing everything...
TODOs
TODOs
Move CollectTransactionsForBlock into its own class.
Let TransactionsForBlock handle order stuffs
Add initial union support
Initial (very broken) start on (very broken) CPFP algo.
fStart on CPFP