Added support for polymorphic associations.

App.User = DS.Model.extend({
 messages: DS.hasMany(App.Message, {polymorphic: true})
});

App.Message = DS.Model.extend({
  created_at: DS.attr('date'),
  user: DS.belongsTo(App.User)
});

App.Post = App.Message.extend({
  title: DS.attr('string')
});

App.Comment = App.Message.extend({
  body: DS.attr('string'),
  message: DS.belongsTo(App.Message, {polymorphic: true})
});

You need to configure the serializer to map to the correct type:

DS.RESTAdapter.configure('App.Post' {
  alias: 'post'
});
DS.RESTAdapter.configure('App.Comment' {
  alias: 'comment'
});

Initializing an alias will automatically allow you to sideload this
type. The support for sideloadAs is only for backward compatibility.

Two hooks exist for the serialization and materialization of an embedded
polymorphic association:
* `addType` that adds the record's type to the serialized data
* `extractEmbeddedType` that retrieves the record's type from the
payload.

Both hooks rely in the JSONSerializer on `keyForEmbeddedType`, which returns the string used to
represent the record's type in the payload. The default value is
`'type'`