Overload environment variables

Addresses #38 and #57 and is an alternative to #58.  Allows overriding `ENV` variables via `Dotenv.overload` via `Dotenv::Environment#apply!` that follows the ruby convention of using a bang for destructive methods.

This adds some duplication between `Dotenv.load`, `Dotenv.overload` and to an extent, `Dotenv.load!`.  I'd be happy to update the pull request to address that or submit a follow-up request that does after getting some feedback.