Improve error handling in reuseclient example
Allow to quit example by calling Qt.quit from QML
Abstract main operations in EnginioClientPrivate.

By changing operations to use templates and object adapters we can use
different storage types for messages. That allows us to use QJSValue
from QML and QJson from C++.

It matters especially for QML where usage of QJson is far from optimal
as each message has to go through 4 conversions:

 QIODevice -> QByteArray -> QJsonObject -> QJSValue,

the patch is reducing temporary QJsonObject instance.

As a side effect we may in future do experiments with other object like
classes. For example it may be easier to write an efficient query
builder.
Cache JSON.stringify

Conversion QJSValue -> QByteArray needs to be really fast, we can not
evaluate a JS script each time when it is needed.
Say hello to EnginioQmlRepy

The new class is implementing QJSValue based api on top of EnginioReply.
Add missing type registration
Implement sort parameter on query operation.