Collection set isEqual

An isEqual function can now be passed to collection.set. This is used to determine if models passed into set are the same, thus stops unnecessary recreation of models when they are, for all intensive prepossess, they are the same.