fix: global rate limit/dynamic route limits.

In the presense of only a dynamic rate limit for a route,
the global rate limit(s) were still coming in to play.
refactor logging and error handling

* use an instance logger to log any warnings/errors.
* handle parse errors for rate limit strings specified on decorators
  and fall back to the global limits if encountered.
* improve logging tests.