Qt5: reimplement QAbstractProxyModel::sibling so that it isn't broken

The Qt5 changed the way how QAIM::sibling works. Instead of being hardcoded
within the QAIM, it is now a virtual which can be (and is) overriden by the
derived classes including the QAbstractProxyModel.

It turns out that the QAbstractProxyModel's implementation by default doesn't
support proxies which happen to reorder the items within the model. As of the
5.2 branch, Qt's implementation of QAbstractProxyModel::sibling simply
translates the parent of the index in question and uses the row/column as
offsets within the *source model*. This is arguably a bug; the Qt4 code instead
looked at the parent within the proxy itself, and used row/column as offsets
within the proxy, which is also what the user code asked for.

Qt5 upstream fix (under review right now) at
https://codereview.qt-project.org/81685 .

REVIEW: 117027