Port the tests of web page properties and functions.

https://github.com/ariya/phantomjs/issues/12439
Provide OS kernel version in system.os.

This is available via the new property called `release`. A very simple
example to demonstrate it:

  var system = require('system');
  console.log('Kernel release', system.os.release);

which will print (on OS X 10.7.5 Lion):

  Kernel release 11.4.2

https://github.com/ariya/phantomjs/issues/12587
System#os.version should know OS 10.9 Mavericks.

https://github.com/ariya/phantomjs/issues/12579
System#os.version workaround for new(er) OS X versions.

In case Qt doesn't provide the information yet, deduce it from the OS
kernel version (e.g. 14.x.y for OS 10.10 Yosemite).

https://github.com/ariya/phantomjs/issues/12579
Fix the mismatch of test files and their contents.

https://github.com/ariya/phantomjs/issues/12439
Implement clearMemoryCache() on a web page to clear the cache.

Unfortunately, due to Qt and WebKit limitation, this is technically
clearing all the cache used by every web page instance. It is the
best we can have right now.

https://github.com/ariya/phantomjs/issues/10357
Add a test to demonstrate the problem with JSON-ification.

https://github.com/ariya/phantomjs/issues/12615
Port test tests of CJK codecs.

https://github.com/ariya/phantomjs/issues/12439
Port the test for console.log multiple arguments.

https://github.com/ariya/phantomjs/issues/12439
Port the tests of the cookiejar module.

https://github.com/ariya/phantomjs/issues/12439
README: Note on PhantomJS 2.

https://github.com/ariya/phantomjs/issues/10448
Port the tests of the web page's setContent().

https://github.com/ariya/phantomjs/issues/12439
Port the test of web page's zoom factor.

https://github.com/ariya/phantomjs/issues/12439
Port the tests of keyup, keydown, and keypress events.

https://github.com/ariya/phantomjs/issues/12439
Port the tests for mousedown, mouseup, and mousemove events.

https://github.com/ariya/phantomjs/issues/12439
Fix JPG image rendering.

To pass QString as a const char* we should call <QString>.toLocal8Bit().constData().

https://github.com/ariya/phantomjs/issues/12684
Fix invalid directory path for Windows.

https://github.com/ariya/phantomjs/issues/12715
Add phantom.onScriptComplete hook.

If set, this hook is called when the main script (the one named on the
phantomjs command line) completes evaluation.  This allows a library
(e.g. a test harness) to detect when no further code will execute
except as a result of events already pending.

https://github.com/ariya/phantomjs/issues/12439
Execute tests within each directory in alphabetical order.

https://github.com/ariya/phantomjs/issues/12439