Fixes Path & Query handling of + and special chars

The + character should not be substituted for a space within a path
element of a URL. To be on the safe-side, we will always output it as a
percent-encoded character.
Using + in place of a space character within the query string is a
deprecated practice. Spaces are now percent-encoded within the query
string.
This also corrects the handling of other special characters within the
query and path segments. (e.g. *,;() etc.)
Fixes percent-decoding in the URL Fragment

URL Fragments may contain percent-encoded characters, and so, should be
percent-decoded.
Fragments may contain special characters that do not need to be encoded.
Moves RFC-3986 util methods into their own class
Moves Encoding functions to their own class

This moves functions used for encoding the outputted URL segments into
their own class.
This also removes a bunch of calls to the deprecated "of" method,
replacing them with calls to the UrlBuilder's constructor.
Moves decoding methods into their own class

This also removes all use of the deprecated "of" method.
Renames Decoder method decodeQueryParameters -> parseQueryString

The method actually parses and then decodes the query string, so I felt
this was a more appropriate name.
Fixes NPE when building from URI

According to the URI API, both the path and query getters can return
null. While that isn't usually the case, this test covers those
scenarios. The resulting URL may or may not be the desired outcome: for
example, any mailto URI will result in the URL "mailto:". I believe this
would also be the case for other SSP-style URIs.
Adds a test showing that user info is not decoded

According to the URL spec, user-info can have %-encoded characters,
which we do not take into account.
Adds constants to Decoder for readability

It makes the urlDecode method private, since it's only used from within
the Decoder class.
Also inlines some helper methods (one of which was public for no good
reason).
Renames methods on Encoder

This also moves the encodeQueryParameters method to the Encoder class.
Protects against possible NPE on encodeFragment
Adds pending test for higher-order unicode chars

Unicode characters above U+FFFF are not currently supported, as shown by
this test.
Merge pull request #27 from mfulgo/master

Fixes bugs in Url Encoding and Decoding