(#21653) Skip modules with no manifest directory when loading resource types

The resource_type face tries to parse all manifests from modules, but was
failing if a module didn't have a manifest directory. This is not an error
condition so we just skip those modules.
(maint) Refactor type_loader, mostly specs

This cleans up the specs for type_loader a lot and slightly refactors a few
methods in type_loader.
Merge pull request #1752 from pcarlisle/ticket/21653-resource-type-cant-find-file

(#21653) Skip modules with no manifest directory when loading resource t...
Merge branch 'stable'

* stable:
  (maint) Refactor type_loader, mostly specs
  (#21653) Skip modules with no manifest directory when loading resource types
(#7911) Simplified libs section of installer

This will make sure that all files in the source lib directory
make it into the ruby sitelib directory

As the type of files being included in the lib directory has
grown, rather than call each filetype out specifically in the
installer (ie globs like lib/**/*.rb, lib/**/*.py), it seems
easier to just move everything from the source lib directory
to the the sitelib directory during installation.

The new glob lib/**/* now includes directories in the glob
list.  This caused an error in do_libs because File.install
would be called on a directory resulting in a 0 byte file being
placed where a directory should have been.  The error is generated
on the second pass of the loop when File.makedirs is called, and
the file exists and is NOT a directory.  This is the reason for
skipping directories in the do_libs section.