Simplify Env code by reusing QProcessEnvironment.

This gets rid of the custom parse code and slims down the API.

https://github.com/ariya/phantomjs/issues/12424
Stop early when QtBase or QtWebKit failed to compile.

Currently, the build script will continue to try to build PhantomJS
even when either QtBase or QtWebKit failed to compile. In such a
case, the script should return early and emit an error message.

https://github.com/ariya/phantomjs/issues/12433
Remove patches/ since they are for 1.x only.

https://github.com/ariya/phantomjs/issues/10448
Remove website/ directory.

The web site has been based on GitHub pages for 2.5 years already.
More tests for the arguments object.

https://github.com/ariya/phantomjs/issues/11845
https://github.com/ariya/phantomjs/issues/11558
https://github.com/ariya/phantomjs/issues/11746
https://github.com/ariya/phantomjs/issues/10315

https://github.com/ariya/phantomjs/issues/12439
preconfig.sh: don't require ICU on OSX

This isn't needed for the full build, only QtWebKit which has it's own ways of finding the system ICU.

https://github.com/ariya/phantomjs/issues/10448
Fix path handling when running the build process.

https://github.com/ariya/phantomjs/issues/12433
Launcher for ECMA-262 test suite (test262.ecmascript.org).

https://github.com/ariya/phantomjs/issues/12439
Fix rasterize example exit status on failure.

https://github.com/ariya/phantomjs/issues/11911
Use Array.prototype.slice in window.callPhantom.

window.callPhantom formerly used Array.prototype.splice for cloning
its arguments to the internal _phantom.call. This relied on
non-standard behaviour of the splice method when only a single
argument was passed to it (it requires 2 arguments).

The correct method for cloning the arguments array is to use
Array.prototype.slice, which accepts a single argument (index) and
returns a new array from the specified index.

https://github.com/ariya/phantomjs/issues/12306
Encode URLs when passing to JS: issues #12216 and #11035.

 * Use QUrl::toEncoded() instead of QUrl::toString() to compute
   WebPage.url, WebPage.frameUrl, the first argument to an
   onNavigationRequested hook, and the 'url' property of the object
   passed to an onResourceError hook.  This makes them consistent with
   the data passed to the onResourceRequested, onResourceReceived,
   and onResourceTimeout hooks, and with the semantics of WebPage.open(),
   WebPage.openUrl(), and the cookie jar.  (Issue #12216.)

 * Use m_currentFrame->baseUrl() instead of m_currentFrame->url() for
   WebPage.frameUrl; this is a partial workaround for a bug in QtWebKit
   which is the root cause of issue #11035.  Noticed while attempting to
   test the above changes.

 * Take care not to mangle the encoding of the url passed to the
   WebServer.listen callback function.  Necessary in order to test the
   above changes: not only should JS receive %-encoded URLs, the server's
   encoding of non-ASCII characters in URLs should be preserved; to test
   this thoroughly, a heinously non-Unicode-compatible encoding (Shift_JIS)
   is deliberately used for the URLs in all the new tests.
Add phantom.resolveRelativeUrl and phantom.fullyDecodeUrl.

These utility functions make it easier to work with encoded URLs.
See issues #12216 and #11035.