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