Store Managed Adapters & Serializers

Pull request to make a store instance responsible for it's own adapter and serializer instances - as suggested fix to #2588 by @tomdale.

Serializers and Adapters are no longer singletons.

Failing test included.
I think the intention is that if you define an 'application' adapter it should use that before the stores default adapter (which by default is ['-rest'](https://github.com/jmurphyau/data/blob/56888dd70233bdff186e3e2bf07f87264bf71cbe/packages/ember-data/lib/system/store.js#L209))

It looks like there are some [specific tests](https://github.com/jmurphyau/data/blob/56888dd70233bdff186e3e2bf07f87264bf71cbe/packages/ember-data/tests/unit/store/serializer_for_test.js#L31) that would fail if this logic is changed.

In saying that, it seems like the implementation of 'defaultAdapter' is close to following this same logic but not quite. ([default logic - if this.adapter is a string](https://github.com/jmurphyau/data/blob/56888dd70233bdff186e3e2bf07f87264bf71cbe/packages/ember-data/lib/system/store.js#L250), is to 'adapter:[this.adapter]', then 'adapter:application', then 'adapter:-rest', and default value for 'this.adapter' is '-rest' as mentioned above)

Caching an 'application' adapter (if exists) and the default adapter is the way to go though - yep. Will update that.