Edit metadata dialog: Improve performance by only writing changed fields to the databse when clicking OK or Next

Edit metadata dialog: Do not auto change the title sort field when
clicking OK if the title was changed. Instead the title sort field must
be changed explicitly.
Edit metadata dialog: If the title's case is changed auto-update the title sort
Book details panel: Make series and tags clickable. Clicking on them will search the calibre library for all books in the same series/ having the same tag

Fixes #1341297 [[Enhancement] make series name (in book details) a link/clickable](https://bugs.launchpad.net/calibre/+bug/1341297)
Port compiling of .ui forms
Port imports
Port build script for building PyQt extensions to PyQt5
Port the progress indicator extension to PyQt5
Allow controlling PyQt5 import path via the env var PYQT5_IMPORT_PATH
faster builds
Get rid of the PyQt4 string from everywhere
Port: setMargin() reset() QStringList()

setMargin(): QLayout no longer has a setMargin() function, replace with
setContentsMargins()

reset(): QAbstractListModel no longer has reset(), replace with
beginResetModel(), endResetModel()

QStringList: No longer exists, a simply python list of strings works
instead
Fix mouse wheel not working in diff view
Port coffeescript compiler
Add note about headless Qt QPA plugin
Port WebKit imports and QChar

WebKit has been split up into QtWebKit and QtWebKitWidgets. Change
imports accordingly.

Replace use of QChar since it no longer exists in PyQt5
Port syntax highlighters
note about creating import checker
...
Port usage of QString and various miscellaneous imports that no longer work
Port various import from QtGui to Qt