Fix inefficient loop in QueryStringDecoder.decodeComponent()

- Fixes #2228
- There's no point of looping until the end of the component if at least one '%' or '+' is found.