Jersey 2469

As UriBuilder spec defines, query parameters should be encoded using application/x-www-form-urlencoded rules (https://jax-rs-spec.java.net/nonav/2.0-SNAPSHOT/apidocs/javax/ws/rs/core/UriBuilder.html).

Changed UriComponent to conform to UriBuilder spec, making query parameter to be encoded correctly on three methods of UriBuilder (queryParam(...), replaceQueryParam(...), replaceQuery(...)).

Added new unit test to verify correct encoding of special characters, and adjust existent test to expect values encoded in query string. 

This set is expected to be encoded when used in query string: ! # $ & ' ( ) * + , / : ; = ? @ [ ];
 as defined in (http://en.wikipedia.org/wiki/Percent-encoding).

Check (https://java.net/jira/browse/JERSEY-2469 and https://java.net/projects/jersey/lists/users/archive/2014-04/message/13).
The problem is that we cannot simply change behavior of RI classes that impact behavior of JAX-RS API implementation. We first need to make any necessary changes in the JAX-RS spec and only then we can fix the implementation. This is not just a question what is right or wrong according to RFCs. We need to also take into account whether the behavior still adheres to what is written in JAX-RS spec (in this case UriBuilder javadoc). And we cannot change this behavior in an incompatible way. 

Frankly, at this point, I'm not sure if we are breaking the spec, or not. And unfortunately I do not have enough time to look deep enough into the problem at the moment. So my preference would be to not make changes that may potentially break the JAX-RS spec in this area or that are too ambiguous that could be subject to a very wide interpretation.