820392 - repository hostname validation

Allow not fully qualified names as a repository URL. Also allow
numbers as first characters. Added some specs for edge cases.
Move all validators to one place

Since validators are not models they should not be in app/models.
All validators are now placed in lib/validators/ and each has its own
definition file.

All validators are in module Validators. When you want to use custom
validation in model you must specify a validator class so it gets loaded
by autoloader. If you use DSL provided by ActiveModel::Validations for
custom validator you'll receive unknown validator error because models
are loaded before lib. That's why we should always use validates_with
when dealing with custom validators.
Code cleanup

To obtain boolean as a result !! is usually used. Also parenthesis in
method definiton for arguments should be used.
Repository feed validation moved to validator

Validation was performed in controllers in API and UI which was not DRY.
This logic is extracted in existing KatelloUrlFormatValidator that was
not used anywhere. This validator uses KatelloUrlHelper which I left
intouched because it can be reused more easily than validator itself.

Since tests did not specify feed because it was not required until now I
had to add feed info wherever fake repository was created.
Merge pull request #1375 from ares/bug/820392-repository_hostname_validation

Bug/820392 repository hostname validation