Sm expand machine envs

This is the changes from @GriffinHeart here: https://github.com/scottmotte/dotenv/pull/19

But it's updated because the library has since diverged so much from that point.