Don't disable the cache when inside `proxyquire()` and other improvements

This is the pull request I promised a week ago in IRC together with @feross.

This change allows using proxyquireify with `tape`, which has both circular dependencies and keeps global state. Previously it would fail due to the lack of caching.

Proxyquireify can now be used as a browserify plugin (as opposed to a browserify replacement) as well.

I realize this is a rather big pull request. I'm open to feedback, so let me know what you think.