HasOneNestedSchemaItem setValue: delegate to id schema item when setting association to another instance

When the parent resource sets the nested resource with a new instance of
the related type, and a subsequent fetch happens, changing the associated
nested resource id, some data from the old instance carries over to the
new instance.

Considering two groups:

```js
{
  id: 6,
  name: "Development",
  agents: [ { id: 2, name: "Development Agent" } ]
}
```

```js
{
  id: 7,
  name: "Support",
  agents: [ { id: 3, name: "Support Agent" } ]
}
```

If a parent object sets its group to the Development group object, parent.data.group will look like:

```js
{
  group: {
    id: 6,
    name: "Development",
    agents: [ { id: 2, name: "Development Agent" } ]
  }
}
```

If the parent object is fetched, and the response payload contains the Support group, but with not all attributes (id and name),

```js
{
  group: {
    id: 7,
    name: "Support"
  }
}
```

then parent.data.group will look like:

```js
{
  group: {
    id: 7,
    name: "Support",
    agents: [ { id: 2, name: "Development Agent" } ]
  }
}
```

As the parent.data changes, properties that declares it as dependencies will fire, including parent.get('group'). In `getValue`, it will extract the id from the hash (7), fetch the group object with id 7 from the identity map, and update it with the hash content ("Support" name, which will be the same as before, and agents, which will be replaced with Development agents...).

/cc @jish @shajith @jamesarosen @kruppel 
At first, this was confusing to me -- I *want* the person's street to be update in the browser -- but then I realized what the `data` bit was doing in there. What do you think of making that distinction more explicit? Something like
```js
person.set('address', newAddress);

// update the local data:
expect(person.get('address.street').to.equal('2 Main Street');

// but don't modify what we got from the server:
expect(person.get('data.address.street')).not.to.equal('2 Main Street');
```