Refactor URL implementation per RFC-3986

See also #215

The core tenets of this change are as follows:

* `Guzzle\Http\Url::$path` can now be an empty string, it is never coerced to '/'
   * `Guzzle\Http\Request::getResource()` will still return '/' if there is an empty path (this is a requirement of RFC2616 - HTTP/1.1)
* QueryString no longer has a `$prefix` property
   * The '?' delimiter is now managed/inserted by `Guzzle\Http\Url`

Most critical code changes occur in `Guzzle\Http\Url`. Numerous tests needed to be updated, mostly to correct the "assumption" that a `QueryString` will begin with ?, or that a `Url` will always contain a '/' in the path.

The only components outstanding are the ArrayCookieJar and its tests. Currently the following tests are failing, and I am unsure of how to fix them:

* `ArrayCookieJarTest::testReturnsCookiesMatchingRequests` (4 separate datasets)