Fixes #7616 - Use validates_lengths_from_database

Note that unfortunately validates_lengths_from_database cannot be applied at a
global level directly against ActiveRecord::Base, since the
validates_length_from_database method requires the class to have a table name
(with the ability to load the schema)
fixes #4056 - add checksum selection for custom repos

note that this also does a few things:
  * hides gpg key for non-yum repos on new repo and repo info pages
  * moves the regeneration of metadata during unprotected changing (and now checksum changes)
     to an async task on update
As part of this the repodata generation "subtask" was causing the tasks list column to be very huge
https://github.com/theforeman/foreman-tasks/pull/88 was opened to resolve this, but is not needed when
testing this commit
Merge pull request #4681 from jlsherrill/4056

fixes #4056 - add checksum selection for custom repos
Merge pull request #4680 from daviddavis/temp/20140923164704

Fixes #7616 - Use validates_lengths_from_database