Better handling of validation errors + more documentation

closes #3153
- this is all about the validation engine
- add a option, `opts.model`, to use a passed-in model directly if needed
- handle validators that return an array of strings, array of objects, or both
- ajax util returns either an array of errors or a single concat'd string
- remove formatErrors function from the mixin and make it private
- allow validation options to be passed into `.save()` since ember-data doesn't take params on `.save()` anyway
- streamline control flow

The validation engine needs to be updated to handle different error types (array of objects vs. array of strings or a mix of both), as well as handle more passed-in options depending on what's needed. Also, needs more docs. :)

As I update the PR for this, it'd be great to hear pain points, feature requests, and thoughts of the new features added.