Add ability to set upload/download rate limits.

This pull request adds optional rate limits for uploads and downloads. Rate limits are off by default, and can explicitly turned off by setting a rate limit <= 0.0.

The rate limit functionality only applies to PIECE message exchanges, so other bt protocol message exchanges are unaffected.

Rate limits are not exact, and are more of a "hint" to the client. In reality actual throughput will fluctuate somewhat above/below the requested value, but the average throughput will be very close to the requested limit.