Add build script for Windows
Update .gitignore for Qt 5.3.

 * Ignore src/phantomjs_plugin_import.cpp, which is now created during
   the build.
 * Add leading slashes to a bunch of files that should not be ignored if
   they crop up in subdirectories.

Part of issue #12467.
Better Qt version check.

 * Allow any patchlevel of Qt 5.3.x.
 * Do it in the master .pro file instead of main.cpp; this makes the build
   fail immediately rather than after compiling a bunch of stuff.

Part of issue #12467.
Add capability to build PhantomJS against system Qt/Webkit.

Invoking build.sh with --system-qtwebkit will skip the build of Qt and
QtWebkit and use the qmake in $PATH to build PhantomJS proper.

This doesn't actually *work* at the moment because the bundled
copy of Webkit has patches not yet merged upstream, but it's still
useful to have for testing purposes.

Part of issue #12467.
Rationalize handshake between build.sh and preconfig.sh.

 * build.sh now handles building qt and qtwebkit.
 * preconfig.sh is now only responsible for accumulating arguments
   to pass to qt's configure script.
 * preconfig.sh doesn't have command line arguments of its own;
   anything on its command line will be passed directly to qt's
   configure script.
 * first pass of adjustments to the qt configure parameters
   to try to get a more static build - unfortunately, system
   sqlite, libz, libpng, and libexpat are still getting pulled
   in somehow (mostly via fontconfig, I think).

Part of issue #12467.
Add option to build against system qtbase but bundled qtwebkit.

As with the system-qtwebkit option, this does not actually work at this
point, but it enables experimentation toward getting it to work.

Part of issue #12467.
Correct SQLITE3SRCDIR setting.

This is how we arrange for QtWebkit to use QtBase's bundled copy of
sqlite; without it, QtWebkit will attempt to use a system-provided
library instead, and if headers are unavailable, the build will fail.

Part of issue #12467.
Add --system-qtdeps build mode.

In this mode, system-provided libraries will be used for all of
Qt's dependencies, but Qt and QtWebkit themselves are still the
bundled copies.  This mode actually works.

Now that this mode exists, disable fontconfig in the "everything
bundled" mode, because it drags in the system freetype and several
other system libraries.  (There is no bundled fontconfig.)

Part of issue #12467.
80-column compliance for build.sh messages.

Cosmetic fix as part of issue #12467.
Obsolete links to any wiki page.

The documentation has been using GitHub pages for a while already.

https://github.com/ariya/phantomjs/issues/10627
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.