Use an expanded with_clean_env method

Bundler's `with_clean_env` method only resets Bundler-specific environment
variables. Omnibus needs to reset Bundler + Rubygems + Ruby.
Refactor and simplify fetchers [ci skip]

This is a rather large commit, but here was no easy way to split it up
into smaller pieces. This commit refactors fetchers to use the abstract
Fetcher class and adds more documentation and consistency to the
fetcher methods.