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).
This is true, although the spec does not specify the complete behavior for that case (UriBuilder#replaceQuery). The current implementation does some encoding though, and invalid URIs can be generated. I think that the builder should prevent the user from generating invalid urls, and apply the same rules used on UriBuilder#queryParam except for params separations (&) and the equal character (=) that are used as delimiters for values on the query string.