Make tokenlimiter capable of getting rates from a request header

Ratelimiting middleware can be configured to retrieve Rates to be applied to requests. To do that one needs to pass a **ConfigMapper** function in an **Options** struct to the **NewTokenLimiterFromOptions**. The function should map an http request to a JSON string that configures token buckets for it. There can be configured several token buckets for a request. A request will be allowed by the middleware if all token bucket allow its consumption. The JSON token bucket config should look like this:
```json
[{"PeriodSec": 1, "Average": 10, "Burst": 20},
 {"PeriodSec": 60, "Average": 100}]
```
Yes, `tokenbucket.Rate` is very good. Is that ok If i ditch the old Rate type and make this one hide all its internal field and provide a constructor `tokenbucket.NewRate` that will ensure integrety?

I would also Ditch the unused `Option` type and unused variants of NewRateLimitXXX functions. But technically it is break of the package contract and I know that you are very cautious about that.  In my opinion it is too early to freeze the API, and we should free to make changes that won't burden us with support for deprecated stuff at such early stage of development, but it is your call. So what do you think?