Fixes #4045: Repository name and label validations properly handled.

Repository name and label validation were being handled improperly
and without the same format as other model validations. This creates
and proper active record validators for each and provides a message
indicating to the user the scope of the validation (i.e. Product).
```ruby
repos.any? do |repo| 
  other_repo_in_prod = repo.product.id == self.product.id  && repo.id != self.id
  if other_repo_in_prod && attribute
   other_repo_in_prod &&= repo.send(attribute) == self.send(attribute)
  end
  other_repo_in_prod
end
```