Support DS.Store#all(DS.Model) and DS.Store#all(subclass of DS.Model)

This commit adds the possibility to get all models of a certain type, where sub-types are also included.

Let's say you have a `Person = DS.Model.extend()`, a `Student = Person.extend()` and a `Professor = Person.extend()`. To get all persons you can now do a `var allPersons = store.all(Person)`. If you additionally have for example a `Lecture = DS.Model.extend()` you can get all models of the store via `var allModels = store.all(DS.Model)`.

This PR is the rebased version of #339, on the recently merged `relationship-improvements` branch.