Support client id when saving embedded records

When a related hasMany record is persisted as an embedded record
for the first time, it does not have a server assigned ID. This
causes a problem when retreiving the embedded response back from the
server. The record given back from the server now has an ID. Because
there was no way to identify that this was the same embedded record,
it is treated as a new record, creating a duplicate on the client.

The fix:

If the server receives and passes back a `_clientId` (configurable)
for embedded records, the client can reconcile the records and prevent
duplicates.

E.g.

```javascript
App.User = DS.Model.extend({
  name: DS.attr(),
  addresses: DS.hasMany('address')
});

App.UserSerializer = DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, {
  attrs: {
    addresses: { embedded: 'always' }
  }
})
```

Request (Save)

```json
{ "user":
  {
    "id": "1",
    "name": "Tim",

    "addresses": [
      {
        "_clientId": "ember2344",
        "name": "Home"
      },
      {
        "id": "1",
        "name": "Work"
      }
    ]
  }
}
```

Example response:

```json
{ "user":
  {
    "id": "1",
    "name": "Tim",

    "addresses": [
      {
        "id": "2",
        "_clientId": "ember2344",
        "name": "Home"
      },
      {
        "id": "1",
        "name": "Work"
      }
    ]
  }
}
```