Resolve issue with pushPayload and createRecord duplicate records

When designing a realtime system with websockets, a common pattern is
to push all changes out to clients using websockets. Because most
store operations are idempotent this works great most of the time.

However, there is an issue when using createRecord. A common pattern
in a backend is to receive the payload, create a new database record,
push the details of the created records to listening clients via
websockets, then return the response to the POST request (including
the new record id) to the HTTP client.

Unfortunately, this can easily lead to a race condition for the client
creating the record, as if they receive a websocket push before
the ajax response they end up with two records with the same id in the
store.

This pull request resolves this issue by checking in the didSaveRecord
callback whether a record with the same id has been already pushed to
the store before the callback was called. It also ensures the promise
returned from record.save() resolves with the already existing record.