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}]
```
> It does not seem right to deserialize the object and then create another instance of the same 
> type via a constructor

Let me elaborate on this:

This is how I think about this particular case - we are unmarshalling the object from some internal representation, and then creating an instance of it to validate parameters to enforce invariants in constructors.

In case if you only need this data structure for JSON serialization, your solution makes perfect sense, however let us move this data structure to Vulcand as Vulcan library does not deal with serialization formats in backends.