(#16568) Make typecollection optimization optional

This pull request re-works an optimization made in 242692e that causes the `TypeCollection` skip searching for objects that were missing in a prior compilation. Several issues have been reported by users who found this behavior to be confusing (ref [#16568](https://projects.puppetlabs.com/issues/16568) and related issues).

The first patch adds a warning message that the master will print whenever it voluntarily skips searching for an object. This is absolutely critical as currently the `TypeCollection` silently skips the search and the only error message reported to the user is `Error 400 on SERVER: Could not find <thing>...`. This is very confusing to users who have missing or misconfigured modules when they take the appropriate corrective action but the server keeps giving them the same error.

The second patch adds a new configuration option, `:ignoremissingtypes`, that controls the behavior introduced in 242692e. This setting is set to `false` by default as the optimization appears to address a very narrow use case and probably isn't worth the confusion it causes to users who don't need it.