Reason for this change: better mitigation of "penny-flooding."
Behavior before this change: If you ran with the -limitfreerelay boolean arg set, bitcoin would stop relaying free transactions if it got more than 150Kbytes of them in any 10-minute period.
Behavior after this change: Bitcoin will stop relaying free transactions based on an exponential rate-limiting function, where more transactions in a shorter period of time are more likely to be dropped (and the default average is to allow about 150Kbytes over 10 minutes). -limitfreerelay is changed from a boolean to a KBytes/minute rate; default is 15.
Original code from Satoshi-- I added a couple of comments and allowed the rate to be set with the -limitefreerelay option.