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. 
I disagree here: we shouldn't enforce + instead of %20. Afaik, this is neither part of RFC3986 nor supported by all servers. + should be let untouched, but not enforced.