Gets the pending changes from the server, starting
with lastChangeId.
Will return an empty stream if no changes are available,
but lastChangeId still exists in the change log.
Will return null if lastChangeId has expired and removed from the
change log.
Synchronizes pending local changes to the server and tries
to do sync the pending changes from the server to the app.
When it is not possible to do a consistent synchronization
of the pending changes from the server, reverts to a
full synchronization from the server.