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.