Clean up the PathSupport object

This pull request cleans up the PathSupport object.  It's technically not backwards compatible, but I think the change is extremely low risk.

### Required parameter to PathSupport constructor

First, I changed the constructor to require that something be passed in.  We'll usually pass `ENV` in, though we pass other stuff in the test cases.

### Stop using `ENV` in the object

Now that the constructor requires you to pass something in, I've removed references to `ENV` from inside the object.  It **was** pulling stuff from `ENV` if it couldn't find the info from `env`.  It was essentially doing a hash merge manually.  Since it now requires you to pass the env in, the caller is responsible for merging the hash.  I think this simplifies the implementation and should be less surprising from the user's side, but it is technically not backwards compatible

### Assume `ENV` values are always strings

The object had code to support `ENV` values that are arrays.  But `ENV` values will never be arrays unless someone mutates the `ENV` hash and specifically inserts arrays.  I don't think that's something we should support.