Ensure that async hasMany is always a promise
begin tidying up promise usage.

Passing resolver from a caller to a callee, when the
callee merely returns the resolvers resolution is not needed.

In scenarios which still require this pattern, simply providing
the resolve of the resolver is sufficient.
Throw instead of assert in `modelFor` when type can't be resolved.

Background: Asserts are stripped out of production builds. In production,
it is possible that a root key in an API response changes in a way that
your serializer's `typeForRoot` implementation does not convert properly.
Since the assert in `modelFor` is stripped in production builds, the
javascript error raised in a production environment would be:

  "Cannot set property 'typeKey' on undefined"

This commit changes the assert to a check and throw so the error
raised would be something like:

  "No model was found for 'home_planet'"

The provides a much more helpful error for real-world production
errors at a relatively small price (one extra line of code and
a simple value check).
Merge pull request #1547 from lukemelia/model-for-error-message

Throw instead of assert in `modelFor` when type can't be resolved.
Merge pull request #1537 from stefanpenner/tidy-promise

begin tidying up promise usage.
Update header comment format to keep it on minify

Some minifier keep header comment over its format.

1. YUI Compressor
It keeps the header comments beggining with `/*!`
* http://yui.github.io/yuicompressor/css.html#special-comments

2. Closure compiler
It keeps the header comments containing `@license` or `@preserve`
* https://developers.google.com/closure/compiler/docs/js-for-compiler#tag-license

I think header comment is very important because it includes its own license.
Merge pull request #1552 from tricknotes/update-header-comment-format

Update header comment format to keep it on minify
Merge pull request #1440 from teddyzeenny/async-has-many

Ensure that async hasMany is always a promise
add DS.Errors object