Specs reorganized according to Better Specs glines
Instance nethods, not class methods
type_identifier() implementation in the Link class
merge() and merge!() refactored

The merge() method's output was not truly independent, and kept affecting the calling object. This refactoring makes sure that merge() produces a deep clone and does not change the input objects.
Collection merge() specs