Move code from ReplyFinishedFunctor to a EnginioClientPrivate method.

The code was too long to live in a header file and amount of "d->"
sequences was annoying. This change is also needed to cut headers
dependency between enginioclient_p.h and enginioreply_p.h in future.
Introduce a way to delay an EnginioReply

Enginio server can reorder responses, they could be delayed because
of a network problem, etc. To test such situations we need to have
a way to artificially reorder responses that we get from server.
Fix many concurrency problems in EnginioModel

Facts:
 - EnginioModel indexing is based on rows.
 - EnginioModel uses asynchronous api trying to implement synchronous
 model interface.
 - Responses from server can arrive reordered
 - Server keeps really weak data consistency, for example one object can
 be removed successfully twice

All the facts create a big matrix of problems. The patch fixes only
few of them:

 - Updating the same row few times if responses are reordered. Fixed
 by checking "updateAt" property
 - Removing or updating already a removed object. Fixed by scanning the
 cache for the object id
 - Removing two items if responses are reordered. Fixed by scanning the
 cache for the object id

Known, unfixed problems:
 - append and immediate update
 - append and remove reordered
 - _synced flag may be wrong if responses are reordered
 - initial query may override append if append is first.
 - scanning full collection is not be optimal
Merge pull request #182 from nierob/master

EnginioModel fixes