Introduce `actsAsSet` option for has-many relationships
Introduce `isObject` utility method
Introduce Source#_normalizeId and #_normalizeLink

Consolidates shared normalization logic
Add Source#updateLink and implement actsAsSet for has-many relationships
Implement JSONAPISource#updateLink
reject errors instead of swallowing them from queue
rollback records when non-blocking TransformConnector fails
make rollbackTransformsOnFailure optional
Merge pull request #62 from jakecraige/rollback-non-blocking-failure

Rollback source on non blocking TransformConnector failure
Only deserialize non-empty objects returned from PUT.

Otherwise, assume 204 (no content). TODO - check actual status codes.
Settle each transform completely before processing the next queued transform.

While a transform's `didTransform` events are processed, ensure that resulting
transforms and subsequent events are settled together. In this way, the full
effects of a transform will be known before the next queued transform is
applied.

This allows consecutive transforms to be applied to a Transformable source
without explicitly settling each transform.

This change also eliminates the need for a separate transformQueue to be
maintained on the TransformConnector.

[Closes #60]
0.5.3
Remove hasOne links when object is removed.

Replacing a hasOne link when an object is removed appears to create a infinite
loop between sources of trying to replace that link with null.