Coalesce find requests, add support for preloading data

I am still adding comments, cleaning up a bit, but feel like the branch is ready to be reviewed. 

This PR brings following improvements/changes:

1. Find calls from the same runloop will be coalesced into findMany
requests if the adapter has a findMany method
2. Adds a groupRecordsForFindMany hook on the adapter that allows you
to decide how to coalesce the record requests. This will enable fixing
of bugs such as #651, by segmenting on the number of records
3. Allows users to preset attributes and relationships on a model when
doing a find call. For relationships you can either pass in a record or
an id
4. Gives rudimentary support for nested urls, by passing in the record
object to the buildUrl method
5. Removes the owner being passed to findMany becuase it can be looked
up on the original record
6. Adds couple special cased SSOT features that were needed for
buildUrl/removal of owner property to be viable

This PR lays the groundwork for:
1. Adding support for reloading hasManys
2. Making nice sugar for nestedUrls in the RestAdater
Instead of having preloading go through the "front door" of the model (by using `Ember.set` on the computed property), preloading should use the "back door" (directly manipulating `_data`) to simulate the data coming from the server. This should eliminate the need to stub out methods in the state machine, meaning that we can still catch bugs if other parts of the code try to invoke `didSetProperty`/`loadingData` in the `empty` state.