JSONAPI Improvements
Allow a single serializer class per JSONAPISource.

The serializer must understand how to serialize multiple types in order
to work with compound documents. Therefore, it doesn’t make sense to
have a `serializerForType` on the `Source`.
Introduce `resourceLinkURL`
Ensure that default options can be overridden at the class level.

JSONAPISource can now be *extended* with default namespaces, hosts and 
headers. These options can still be overridden in the constructor.
Clarify primary vs related records in `deserialize`
Remove TODOs from console.log statements
Refactor JSONAPISource for JSON API compatibility.

* separate “patch” and “std” modes of operations
* break out individual transform methods
* make default settings configurable through constructor as well as
  overriding class definition
Throw OperationNotAllowed when transform can’t process operation.
Fill out transform implementations in JSONAPISource.

Ensure both “patch” and “std” modes have complete implementations.
Remove `default` prefix from `namespace`, `host` and `headers` options.

It’s better for constructor options to match class properties.
Merge branch 'JSONAPI_Feature' of https://github.com/ProlificLab/orbit.js into json-api-links

Conflicts:
	lib/orbit-common/jsonapi-serializer.js
	lib/orbit-common/jsonapi-source.js
	lib/orbit-common/schema.js
Allow keys to be auto-generated if their mappings don’t exist.

New `autoGenerate` arg for `primaryToSecondaryKey` and
`secondaryToPrimaryKey`.

Also, introduces `_registerKeyMapping` to centralize mapping of keys.
New requestable method in OC.Source: findLinked

`findLink` is now solely responsible for finding IDs of linked records,
while `findLinked` is responsible for finding linked records themselves.

This separation allows for some important distinctions:

* For API-based sources, IDs may be retrieved through a different 
  endpoint than linked records

* IDs are typically retrieved with a single request, while linked 
  records are often paginated. Now, meta information can be stored 
  to help fetch linked records in one or more requests.

By default, `findLinked` will attempt to retrieve records from links
cached on a record. If no links are cached, `findLinked` will call 
`findLink`, followed by `find`.
Export `uuid`
0.5.0
Remove IdMap from Orbit exports.
Source#add - data defaults to an empty object
did/didNot action handlers receive result/error arrays as last arg

Previously, arrays were concat’d with method args, blurring the
distinction between inputs and outputs.
Use for (var i=0, l = keyNames.length; i <l ; i++) instead of for in, that caused prototype properties (like _super and so on) to be used in the iteration.
Allow access to `wrappedFunction` from extended classes

This is important for constructors and other functions
for which _super injections can cause problems.