Extract Embedded Records into DS.EmbeddedRecordsMixin

Approximately 200% of the ED issues at the moment are due to embedded records, I think we may have been a little hasty in merging the initial support as there are soooo many edge-cases.

Separating it out makes embedded record support opt-in and also gives us an easier way to manage it.
Also, cleaner code :smiley: 

I also refactored the test to use the existing models, the metaphor is stretched waaaay too far now, but having double barrelled names everywhere ensures we don't miss any edges for decamelizing

https://github.com/emberjs/data/pull/1348#issuecomment-24967462