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
I'm testing this code locally and in every case, the record at this point has no property `typeKey` which is needed to build the URL.  So instead of the expected URLs of `/comments/1` and `/comments/2`, I get URLs `/1` and `/2`.  That means the base URL is always the same (`/` assuming no adapter namespace).

It seems that is not what is intended.  Instead, we expect the baseUrl to be things like `/comments` and `/users`.  Am I missing something or is this a bug?