Add support for missing components/gems in namespaced classes.

Relaxed dependencies via delayed exceptions was introduced in #72.

As introduced in #72, if Polisher::Fedora needed "curb", "pkgwat", and "nokogiri", it was supported via:
  Component.verify("Fedora", "curb", "pkgwat", "nokogiri") {}

If we specify required components for a namespaced class, such as Polisher::RPM::Requirement via:
  Component.verify("RPM::Requirement", 'gem2rpm', 'versionomy', 'active_support/core_ext') {}

it fails with 'uninitialized constant Polisher::RPM' because we're trying to inject a Requirement constant into a class that doesn't exist: Polisher::RPM.
We have to create this RPM class in the Polisher namespace before trying to inject the Requirement == Missing component class.

This commit fixes this and also changes the output to warn the user about the exact missing dependencies on load but delays raising the RuntimeError until you try to instantiate the class.

For example:

$ bundle console
Resolving dependencies...
Failed to require gem2rpm.  Added runtime exception in Polisher::RPM::Requirement
Failed to require gem2rpm.  Added runtime exception in Polisher::RPM::Spec
Failed to require pkgwat.  Added runtime exception in Polisher::Fedora
irb(main):001:0> Polisher::RPM.new
RuntimeError: polisher is missing a dependency - cannot instantiate
...
irb(main):002:0> Polisher::RPM::Requirement.new
RuntimeError: polisher is missing a dependency - cannot instantiate
...
Extract the loop contents into a method to avoid the instance variable.
Fix uninitialized constant ActiveSupport::Autoload via #69
Merge pull request #101 from jrafanie/handle_missing_gems_for_namespaced_classes

Handle missing gems for namespaced classes