(PUP-3244) Allow autoload to handle missing environment

When a previous commit changed from get() to get!() the agent stopped
being able to use an environment that is available on the master, but
not available locally. I had misread the code and missed a trailing
`&&`. This caused me to think that the environment lookup in this case
was required, where in fact it is still optional.

This changes the structure of the code to make it much clearer that the
environment is optional, changes from get!() to get(), and adds some
tests around these code paths.
(maint) Separate test for missing module directory

The test of behavior when a module directory is specified as part of an
environment but is missing on disk was hidden inside another test. This
splits it out and calls out that the behavior is that the directory is
simply ignored.
Merge pull request #3187 from zaphod42/issue/stable/pup-3244-error-when-agent-uses-missing-env

(PUP-3244) Allow autoload to handle missing environment