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