Fixed Utf8UrlEncoder to respect BNF for Uri syntax components on RFC3986

Previously Utf8UrlEncoder and RequestBuilderBase tries to percent encode everything other than a small set of ASCII characters (SAFE_ASCII). 

This adds a few more methods into Utf8UrlEncoder to encode specific Uri syntax components with the allowed characters specified on rfc3986.

RequestBuilderBase's toURI is also modified to use those methods when encoding different parts of the URI.