Fixes #6777: Ensure associations respect organization boundaries.

Resources that contain a belongs to relationship to Organization
should only be associated to other resources that are within that
organization. Further, two resources that belong to different
organizations should not be allowed to be associated to one another.

This issue manifests itself among hosts and most Katello resources.
For hosts, resources that are not available in the hosts organization
should not be allowed to be associated to the host. In Katello,
resources are allowed to belong to a single organization and should
not be allowed to cross boundaries. For example, a product in organization
A should not be allowed to be associated with a GPG key in organization
B.

Finally, this solution takes the approach of validating the association
relationships at the model level to ensure no inconsistent data can
be created at any layer of the application.
I am not as aware of the intended restrictions on locations but could attempt to make this generic to taxonomies. As for the refactoring of what is in tax_host... let me ask this:

1) Why do orphans/mismatches occur in the first place?
2) With this validator orphans and mismatches should not occur correct? The idea is to prevent this from occurring.