Refactored TokenBucket.Consume function

Consume function with limit and duration was doing to much job and it
confuses developers. Moved limit and duration checks to Limiter level
and also introduced more detailed checks and error messages in limiter
and http levels.